Bonjour,
Je cherche un outil gratuit qui vérifie le style de notre code C++ qu'on peut intégrer dans gitlab-ci.
Version imprimable
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).
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: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:
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
Hello,
Depuis clang-format 10 tu as l'option --dry-run.
Dans ton script gitlab-ci:
Je comprends que tu vends ta paroisse :DCode:
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 :D