workshop-llvm

💼 Workshop organised to teach students about llvm tools

Stars
8

Workshop clang tools

Ce workshop traite sur l'intgration des outils clang dans vscode. Il peut quand mme vous aider vous familiariser avec les outils qu'offrent la suite clang si vous utilisez un IDE diffrent.

N'hsitez pas star le repo si vous avez aim ce workshop!

Droulement du workshop:

  • Installation des outils ncessaires
  • 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 vrifier que son code compile

0 : Mise en place du workshop en local

git clone [email protected]:ajnart/workshop-llvm.git workshop
cd workshop

1 : Installation des outils ncessaires

Installation CLANGD

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

Vous pouvez vrifier 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 prcdente, pour le vrifier, faites: clang-format --version

Installation CLANG-TIDY

Clang-format devait galement tre install. On vrifie a grce : clang-tidy --version

Installation de Bear

Nous allons galement installer B-ear afin de gnrer une base de donne de compilation de nos projets. Bear crera un compile_commands.json qui permettra clangd de mieux linter votre code.

Recommandations

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

Mise en place de sa propre norme grce Clang-Format

Configuration de la norme

Dans cette tape, nous allons gnrer un fichier .clang-format qui va tre utilis pour dire clang-format quelle norme utiliser pour linter vos fichiers.

Pour se faire, utilisez un gnrateur 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 rcursivement dans vos fichiers.

Installation de la norme

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

ctrl+p format document with...

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

Vrification du fonctionnement de clangd

Il faut faire la commande bear -- \build command\ pour crer la base de donne de compilation pour clangd. Dans notre exemple : bear -- make gnrera 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-tidy

Mise en place de clang-tidy

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

Crer un fichier .clang-tidy contenant:

Checks: "
    *,
    -fuchsia*,
"

Cette configuration active tout les checks par dfaut, il faut ensuite dsactiver 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, grce clangd il est trs facile de rgler les erreurs basiques dans votre code :

En fonction de votre configuration clang-tidyn vous aurez des recommendations affiches dans l'onglet problems en bas de la fentre vscode:

Mise en place d'un CI pour vrifier que son code compile

Nous allons maintenant s'intresser au dossier .github pour rajouter des workflows grce aux github actions

Tout d'abord, crer un fichier CI.yml pour crer 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:
      • Ralise 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'espre que mon workshop vous a plu. Si vous voulez aller plus loin vous pouvez:

  • Mettre en place une action pour vrifier que son code est conforme sa propre norme
  • Faire une action pour vrifier que les tests passent
  • Utiliser --html sur gcovr pour crer un fichier .html indiquant le coverage
  • Uploader le .html gnr par gcovr dans une github pages
  • Utiliser un analyseur de code smantique
  • Transformer le rsultat de ses tests gtest en HTML

Made with by Thomas "Ajnart" Camlong