/workshop-llvm

đŸ’Œ Workshop organised to teach students about llvm tools

Primary LanguageC++

Workshop clang tools

Ce workshop traite sur l'intĂ©gration des outils clang dans vscode. Il peut quand mĂȘme vous aider Ă  vous familiariser avec les outils qu'offrent la suite clang si vous utilisez un IDE diffĂ©rent.

N'hésitez pas à star ⭐ le repo si vous avez aimé ce workshop!

DĂ©roulement du workshop:

  • Installation des outils nĂ©cessaires
  • Mise en place de sa propre norme Ă  l'aide de clang-format
  • Mise en place du language server clangd avec vscode.
  • Utilisation du language server, lint et clang-tidy
  • Mise en place d'un CI pour vĂ©rifier que son code compile

0 : Mise en place du workshop en local

git clone git@github.com:ajnart/workshop-llvm.git workshop
cd workshop

1 : Installation des outils nécessaires

Installation CLANGD

Tout d'abord nous allons installer clangd, Ă  l'aide de la page d'installation

Vous pouvez vérifier l'installation à l'aide de clangd --version

Ainsi que l'extension vscode clangd ou de l'extension pour votre IDE Ă  l'aide de la commande (ctrl+p):

ext install llvm-vs-code-extensions vscode-clangd

Installation CLANG-FORMAT

Clang-format devrait ĂȘtre installĂ© depuis le paquet installĂ© dans l'Ă©tape prĂ©cĂ©dente, pour le vĂ©rifier, faites: clang-format --version

Installation CLANG-TIDY

Clang-format devait Ă©galement ĂȘtre installĂ©. On vĂ©rifie ça grĂące Ă : clang-tidy --version

Installation de Bear

Nous allons également installer B-ear afin de générer une base de donnée de compilation de nos projets. Bear créera un compile_commands.json qui permettra à clangd de mieux linter votre code.

Recommandations

L'extension clangd recommande de désinstaller l'extension C/C++ pour ne pas avoir de duplications de recommandations

Mise en place de sa propre norme grĂące Ă  Clang-Format

Configuration de la norme

Dans cette Ă©tape, nous allons gĂ©nĂ©rer un fichier .clang-format qui va ĂȘtre utilisĂ© pour dire Ă  clang-format quelle norme utiliser pour linter vos fichiers.

Pour se faire, utilisez un générateur en ligne

Sauvegardez votre .clang-format dans le dossier de ce workshop.

Clang-format va chercher le fichier .clang-format le plus proche du current working directory en remontant récursivement dans vos fichiers.

Installation de la norme

Maintenant, faites en sorte que l'extension clangd soit le formateur de code par défaut dans vscode:

ctrl+p format document with...

formatter

ou alors en Ă©ditant son fichier settings.json:

"[cpp]": {
        "editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd"
    },

Vous devriez maintenant ĂȘtre en mesure de formater votre code Ă  l'aide de votre config .clang-format

Mise en place du language server Clangd

VĂ©rification du fonctionnement de clangd

⚠ Il faut faire la commande bear -- \build command\ pour crĂ©er la base de donnĂ©e de compilation pour clangd. Dans notre exemple : bear -- make gĂ©nĂ©rera un fichier compile_commands.json qui sera ensuite utilisĂ© pour linter vos fichiers.

En mettant votre curseur sur la fonction divide, clangd devrait vous montrer le prototype de la fonction

clang

Clang-tidy

Mise en place de clang-tidy

Nous allons maintenant configurer clang-tidy pour avoir des recommandations sur notre code.

Créer un fichier .clang-tidy contenant:

Checks: "
    *,
    -fuchsia*,
"

Cette configuration active tout les checks par défaut, il faut ensuite désactiver manuellement certains checks à la main en rajoutant une ligne sous la forme: -\glob\,

Pour voir tout les checks disponibles, rendez vous ici

Utilisation du language server et de clang-tidy

Comme vous pouvez le voir sur le gif ci-dessous, grùce à clangd il est trÚs facile de régler les erreurs basiques dans votre code :

jitsu

En fonction de votre configuration clang-tidyn vous aurez des recommendations affichĂ©es dans l'onglet problems en bas de la fenĂȘtre vscode:

code

Mise en place d'un CI pour vérifier que son code compile

Nous allons maintenant s'intéresser au dossier .github pour rajouter des workflows grùce aux github actions

Tout d'abord, créer un fichier CI.yml pour créer une action il faut que cette action:

  • S'active quand il y a des pushs sur master
  • Contienne un job build qui:
    • Utilise le docker epitech
    • Contient une step qui:
      • RĂ©alise votre commande de build

Cette action va maintenant lancer un docker utilisant l'image docker epitech

L'indentation de cette liste correspond à l'indentation que vous aurez dans votre fichier yml 😉


J'espĂšre que mon workshop vous a plu. Si vous voulez aller plus loin vous pouvez:

  • Mettre en place une action pour vĂ©rifier que son code est conforme Ă  sa propre norme
  • Faire une action pour vĂ©rifier que les tests passent
  • Utiliser --html sur gcovr pour crĂ©er un fichier .html indiquant le coverage
  • Uploader le .html gĂ©nĂ©rĂ© par gcovr dans une github pages
  • Utiliser un analyseur de code sĂ©mantique
  • Transformer le rĂ©sultat de ses tests gtest en HTML

Made with ❀ by Thomas "Ajnart" Camlong