Bonjour,
Je cherche un outil gratuit qui vérifie le style de notre code C++ qu'on peut intégrer dans gitlab-ci.
Bonjour,
Je cherche un outil gratuit qui vérifie le style de notre code C++ qu'on peut intégrer dans gitlab-ci.
clang-format est très complet
Ca dépend de ce que tu entends par style :
- S'il s'agit d'homogénéiser espaces, retours à la ligne, alignement du texte... clang-format est plus ou moins le standard de fait
- S'il s'agit de valider le respect de règles de codage (quand mettre un constructeur de copie, ai-je mis std::move au lieu de std::forward, ai-je oublié de mettre un destructeur virtuel...), il faut des outils qui comprennent mieux le code.
- clang-tidy peut fgaire ça, mais l'interface est purement ligne de comande
- Si votre code est open-source, vous pouvez utiliser sonarcloud.io (sinon, il faut payer) (disclaimer : Je bosse pour ce produit).
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Bonjour,
Si tu es sous Windows, avec Visual studio Community tu as de facto un certains nombre d'outils:
- mise en forme du code : edit / advanced / format document.
- analyse de règles minimales et conseils minimaux: analyze / run code analyse / on solution, et : analyze / calculate code metrics / on solution. Configuré par : tools / options / performances tools / rules.
- analyse de performance : debug / performance profiler / ...
- analyse de l'utilisation de la mémoire activé par : tools / options / debugging / enable diagnostics tools while debugging.
Peut être ceci: (désolé j'utilise jenkins comme daimon et non gitlab, je ne pourrais pas aider plus)
https://clang.llvm.org/docs/ClangFormat.html
Sur linux tu as le paquet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part git diff -U0 --no-color HEAD^ | clang-format-diff.py -i -p1
git-clang-format
https://pkgs.org/download/git-clang-format
Ce paquet t'installe l'application git-clang-format:
Je ne sais pas si ça t'aidera mais ça ressemble à ce que tu souhaites.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 $ git-clang-format --help usage: git clang-format [OPTIONS] [<commit>] [<commit>] [--] [<file>...] If zero or one commits are given, run clang-format on all lines that differ between the working directory and <commit>, which defaults to HEAD. Changes are only applied to the working directory. If two commits are given (requires --diff), run clang-format on all lines in the second <commit> that differ from the first <commit>. The following git-config settings set the default of the corresponding option: clangFormat.binary clangFormat.commit clangFormat.extensions clangFormat.style positional arguments: <commit> revision from which to compute the diff <file>... if specified, only consider differences in these files optional arguments: -h, --help show this help message and exit --binary BINARY path to clang-format --commit COMMIT default commit to use if none is specified --diff print a diff instead of applying the changes --extensions EXTENSIONS comma-separated list of file extensions to format, excluding the period and case-insensitive -f, --force allow changes to unstaged files -p, --patch select hunks interactively -q, --quiet print less information --style STYLE passed to clang-format -v, --verbose print extra information
"Quand le monde est dangereux, l'humilité est un facteur de longévité." ( Baxter "Evolution" )
Hello,
Depuis clang-format 10 tu as l'option --dry-run.
Dans ton script gitlab-ci:
Je comprends que tu vends ta paroisse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3script: - clang-format --dry-run -Werror - Exit $LASTEXITCODE # ou if($LASTEXITCODE) { Exit $LASTEXITCODE } si tu veux faire autre chose après en cas de succès.
Au boulot nous utilisons un module communautaire gratuit pour le C++; Sans doute moins complet que le payant cependant... mais ça existe gratuit
Homer J. Simpson
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager