63 votes

Avertissements du compilateur C / C ++: nettoyez-vous tout votre code pour les supprimer ou les laisser?

J'ai travaillé sur de nombreux projets où j'ai été donné de code par d'autres pour la mise à jour. Le plus souvent je le compiler et d'obtenir environ 1,000+ les avertissements du compilateur. Quand je vois les avertissements du compilateur ils me font me sentir sale, donc, ma première tâche est de nettoyer le code et supprimer tous. Généralement je trouve une douzaine de problèmes comme les variables non initialisées.

Je ne comprends pas pourquoi les gens les laisser et de ne pas avoir parfaitement propre compile avec aucun avertissement. Ai-je raté quelque chose? Est-il une raison valable pour laisser juste? Toute l'horreur des histoires à partager?

89voto

Remo.D Points 9841

Je nettoierais n'importe quel avertissement. Même ceux que vous connaissez sont inoffensifs (si une telle chose existe) donneront une mauvaise impression de vous à celui qui compilera le code.

C'est l'un des signes "malodorants" que je rechercherais si je devais travailler sur le code de quelqu'un d'autre.

Si ce ne sont pas des erreurs réelles ou des problèmes futurs potentiels, ce serait un signe de négligence

45voto

Graeme Perrow Points 22249

Nettoyez-les, même s'ils n'indiquent pas un problème réel. Dans le cas contraire, si un avertissement qui n'indique un réel problème apparaît, vous ne verrez pas à travers tout le bruit.

38voto

Nemanja Trifunovic Points 17239

Lors de mon travail, le paramètre du compilateur pour traiter les avertissements comme des erreurs est activé. Donc, pas d'avertissement, sinon ça ne compilera pas :)

20voto

jwfearn Points 8813

Je suis d'accord qu'il est préférable d'éliminer tous les avertissements. Si vous obtenez des milliers de mises en garde vous devez prioriser vos corrections.

Commencer la configuration de votre compilateur pour le plus bas niveau d'avertissement. Ces mises en garde doivent être le plus important. Lorsque ceux-ci sont fixes, incrément de votre niveau d'avertissement et répétez jusqu'à ce que vous atteindre le plus haut niveau d'avertissement. Ensuite, définissez vos options de compilation telles que les alertes sont traitées comme des erreurs.

Si vous trouvez un avertissement que vous croyez qu'il est sûr d'ignorer, de faire des recherches pour vérifier votre théorie. Alors seulement le désactiver et uniquement dans le plus minime possible. La plupart des compilateurs ont #pragma directives qui peuvent désactiver/activer les avertissements pour seulement une partie du fichier. Voici un Visual C++ exemple:

typedef struct _X * X; // from external header, not 64-bit portable

#pragma warning( push )
#pragma warning( disable: 4312 ) // 64-bit portability warning
X x = reinterpret_cast< X >( 0xDDDDDDDD ); // we know X not 64-bit portable
#pragma warning( pop )

Notez que cela ne désactive l'avertissement pour une seule ligne de code. En utilisant cette méthode vous permet également de faire un simple texte à la recherche de votre code dans l'avenir de faire des changements.

Sinon, vous pouvez généralement désactiver un avertissement particulier pour un seul fichier ou tous les fichiers. À mon humble avis c'est dangereux et ne doit être qu'un dernier recours.

14voto

Zathrus Points 5385

Les nettoyer , si possible. Sur un multi-plateforme et multi-compilateur de code (j'ai travaillé sur un qui a compilé sur 7 différents systèmes d'exploitation avec 6 différents compilateurs) qui n'est pas toujours possible. J'ai vu des cas où le compilateur est juste mauvais (HP-UX aCC sur Itanium, je suis à la recherche à vous), mais c'est certes rare. Comme d'autres le remarque, vous pouvez désactiver l'avertissement dans une telle situation.

De nombreuses fois, ce qui est un avertissement dans cette version du compilateur peut devenir une erreur dans la prochaine version (toute personne mise à niveau à partir de gcc 3.x à 4.x doit être familier avec que), donc le nettoyer maintenant.

Certains compilateurs émet vraiment utile avertissements qui vont devenir des problèmes dans certaines circonstances -- Visual C++ 2005 et 2008 peut vous avertir des problèmes de 64 bits, ce qui est un avantage ÉNORME de nos jours. Si vous avez des plans pour migrer à la version 64 bits, il suffit de nettoyer ces sortes de mises en garde permettra de réduire considérablement votre temps du port.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X