mettre en évidence et filtrer (gcc) les messages du compilateur
-
06-07-2019 - |
Question
Je suis en train de refactoriser un projet C, en me lançant environ 1 000 avertissements. Est-il possible de mettre en évidence et de filtrer ces avertissements? (par exemple, rendre tous les avertissements d’index rouges, bleus inutilisés et autres)
Très probablement, certains ides peuvent le faire, mais ce n'est pas une solution pour moi.
La solution
Essayez le paquet Debian colorgcc . J'ai également trouvé trois autres packages: Johannes Schl & # 252; ter's colorgcc ou ce paquet en allemand , ou ce projet Sourceforge
Autres conseils
Ceci est vraiment basique, mais j'utilise grep ...
make 2>&1 | grep --color -iP "\^|warning:|error:|"
juste pour attirer rapidement l’œil sur la ligne d’erreur et la section fautive désignée par ^
.
J'ai trouvé d'autres méthodes qui sur-utilisent la couleur et vous vous retrouvez avec le même problème. Je suppose que vous pouvez également injecter des séquences d’échappement de couleur avec sed
.
Gcc 4.9 semble avoir ajouté cette fonctionnalité via l'indicateur -fdiagnostics-color: http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html#index-fdiagnostics-color-246
Le script warn_summary est plutôt sympathique
Vous pouvez obtenir un décompte de tous vos avertissements, le type et aussi simplement imprimer les avertissements sans toutes les autres sorties de gcc.
gcc <...> | tee buildoutput
warn_summary -s 0 -wpass buildoutput
warn_summary -s 0 buildoutput
Vous pouvez diriger le résultat de votre compilation via grep:
make 2> error.txt; grep -e error error.txt
Compiler dans emacs vous donne un peu de surbrillance. On peut supposer que les détails peuvent être personnalisés.
Utilisez M-x compiler
et lancez votre commande de construction habituelle (par défaut, make -k
).
J'utilise pretty make , qui permet de formater et de colorier correctement la sortie gcc. Le format en retrait pour les options de commande est très clair. J'ai fini par le pirater pour permuter le popen2 obsolète en sous-processus.
Cette réponse concerne davantage l'approche générale utilisée pour retravailler l'ancien code C.
Un grand nombre d'avertissements sont généralement des répétitions du même petit groupe d'avertissements en raison d'erreurs dans les fichiers d'en-tête qui sont incluses partout dans d'autres fichiers de code source.
Si vous refactorisez un ancien projet C, la plupart des avertissements se résument souvent à des choses telles que les anciennes versions des fonctions K'n'R, les distributions précédemment autorisées sont désormais mises en surbrillance avec un avertissement, à l'aide de fonctions obsolètes, etc.
En supposant que vous utilisiez (g) make pour construire le projet, je lancerais la compilation à l'aide de la commande suivante:
gmake 2>&1 | tee results
Ensuite, vous pouvez consulter le fichier de résultats et voir quels sont les avertissements les plus populaires que vous recevez. Commencez par éliminer tous les avertissements existants avant de procéder à tout refactoring de la base de code.
L'exécution de make à partir de vim vous offre de nombreuses possibilités pour associer les messages d'erreur et d'avertissement aux fichiers source.