Warning à activer

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut,

Comme vous le savez peut -être, je suis le co-auteur du cours de C++ qui est actuellement en beta ici. Je suis actuellement en train de créer une version préconfigurée de Code::Blocks que l'on a décidé de proposer en téléchargement pour au lecteur. J'ai, après un conseil de gbdivers (ou de Ksass'Peuk, je ne sais plus), choisi le compilateur Clang, pour sa clarté au niveau des erreurs, un gros plus pour les débutants. J'aimerais maintenant avoir votre avis sur les warnings et autres options de compilation à mettre en place, pour avoir un environnement optimal pour un débutant.

Merci d'avance ! :)

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+2 -0

Cette réponse a aidé l'auteur du sujet

Bonjour,

Personnellement, j'activerais tout et en mode erreur, en particulier pour un cours. Si lors de la rédaction une alerte est gênante alors que le code est juste, je la désactiverais en rajoutant un note pour expliquer pourquoi (i.e. à quoi sert cette alerte et pourquoi elle n'est pas pertinente).

Auteur du sujet

Merci pour vos avis, et je pense que je vais aller vers le -Weverything, ajouté à -Werror, pour obliger le débutant à créer du code de qualité. Sinon, y a-t-il d'autres options utiles que je devrais mettre ? A part le -std=c++14, qui est indispensable selon moi.

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0

Comme je l'ai dit plus haut, -Weverything ne me sert pas en pratique … Je m'en sers quand je debug. Par principe je m'interdis de laisser passer le moindre warning. La seule exception étant le padding, et encore j'essaie de le corriger si possible.

gbdivers, c'est quoi ta définition de "inutile" ? Quand t'as un warning, normalement c'est que y'a un truc pas beau qu'il faut corriger, ça n'est pas inutile par définition.

+0 -0

Cette réponse a aidé l'auteur du sujet

inutile = -Wmissing-noreturn et -Wmissing-prototype par exemple

Mais je viens de tester avec un code d'un exo ( https://openclassrooms.com/forum/sujet/exo-de-gbdivers-autre-implementation ), effectivement, c'est moins bruyant que dans mes souvenirs. On peut s'en sortir en ajoutant spécifiquement les quelques -Wno- sur les warnings casses-pieds

Édité par gbdivers

+1 -0

Cette réponse a aidé l'auteur du sujet

Je travaille avec Wall pedantic et le truc qui stoppe en erreur si un return est oublié (erreur récurrente chez moi). Le everything ne me plaît pas non plus.

Les modes de sanitization peuvent être sympas, malheureusement on ne peut pas tous les activer ensembles)

+2 -0

On parle ici d'une configuration pour des codes d'exemple / application d'un cours, pas d'une configuration pour une situation réel. Je suis convaincu qu'un -Weverything -Werror avec quelques -Wno- sur les points nécessaires serait jouable.

Pour info, boost compile en -Weverything -Werror avec ~20 -Wno- et là on parle d'un code qui est bourré de macro/hack pour supporter un grand nombre de compilateurs/plateformes.

Je préfère nettement tout activer, comprendre l'erreur et si elle est pertinent, puis la retirer; que de ne pas l'avoir, chercher et découvrir qu'il y a un warning qui m'aurait fait gagner du temps.

Auteur du sujet

Cela dit, je cherche une solution qui puisse être utilisée dans un projet "réel", car c'est cette configuration qui sera utilisée par le lecteur s'il souhaite créer ses propres petits projets. (dans un premier temps en tout cas) Donc si Weverything est trop contraignant, je vais peut être choisir un autre "lot" d'options. J'irais regarder la doc, avant de faire mon choix.

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0

Cette réponse a aidé l'auteur du sujet

Le petit problème avec clang, c'est justement sa documentation. Tu n'auras pas la liste détaillé de l'ensemble des diagnostiques possibles (si tu trouves une telle ressource je prends). Tu vas devoir te baser sur celle de gcc qui n'est que partielle (clang en offre plus).

Avant de décrêter que -Weverything est trop contraignant, pourquoi ne l'essaierais tu pas ? (sur tes exemples/projets)

Yop, Personnellement je mettrais de base -W -Wall -Werror :) je trouve que c'est quand même une bonne base pour un débutant :P . Par contre au risque de me faire insulter de tous les noms, je trouve ça bizarre de pré configurer le compilateur de l'IDE, ça pourrait être intéressant pour la personne qui suit le cours d'avoir un petite partie expliquant comment faire :) .

PS : I'm here now :D Cordialement,

Édité par Soin...

+0 -0
Auteur du sujet

En fait, la version préconfigurée n'est que pour les premières parties du cours, celles situées avant la partie sur les outils, où seront expliqués le fonctionnement de la compilation, comment utiliser des compilateurs, des éditeurs de texte, et des débogueurs, présenter les plus connus, puis comment on "fusionne tout" dans un ide, et enfin faire une présentation des ide les plus connus et de leur configuration. (cf plan du cours)

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte