Bon, c'est un point que je crois avoir compris, mais j'aimerais juste
une confirmation (ou infirmation... et/ou précision) de votre part.
Considérons le programme suivant. Ai-je raison de croire que les
trois premiers paragraphes (jusqu'au commentaire « maintenant on dépend
du boutisme ») donnent un résultat indépendant du boutisme de la
plateforme ? Entre le deuxième et le troisième paragraphe, l'un vous
paraît-il plus lisible que l'autre ?
clang a un -Weverything. gcc a toujours refusé de le créer, parce que les utilisateurs risqueraient de mal l'utiliser et de faire perdre des heures à tout le monde avec leurs râleries que tel warning ne leur plaît pas (ils n'avaient qu'à ne pas l'activer !).
Etat d'esprit un peu arrogant, genre on sait mieux que l'utilisateur ce dont il a envie. Rien de tres surprenant pour gcc donc.
En même temps, à ma connaissance, ils n'ont pas refusé un patch implémentant -Weverything, ils ont juste refusé de l'écrire. Aussi, certains développeurs de clang trouvent pénibles les utilisateurs qui insistent pour râler dès qu'on ajoute un warning, qui se retrouve automatiquement dans -Weverything, donc ce n'était pas de la parano de la part de gcc. Donc ne pas oublier l'arrogance des utilisateurs, pour faire pendant.
Apres, le fonctionnement des warnings dans gcc est un vrai gros bordel. On ne peut qu'esperer que clang, etant parti de zero plus recemment, ne fera pas les memes conneries.
Ils s'y sont effectivement pris très différemment. Mais note quand même que les warnings de gcc ont progressé ces dernières années.
Un mini-patch (à peine testé et sans doute largement améliorable) pour avoir -Weverything dans gcc-4.8 (aller dans le sous-répertoire gcc/ avant de l'appliquer) :
Index: common.opt ================================================================== --- common.opt (revision 194319) +++ common.opt (working copy) @@ -689,20 +689,24 @@ Common Var(warn_unused_variable) Warning Warn when a variable is unused
Wcoverage-mismatch Common Var(warn_coverage_mismatch) Init(1) Warning Warn in case profiles in -fprofile-use do not match
Wvector-operation-performance Common Var(warn_vector_operation_performance) Warning Warn when a vector operation is compiled outside the SIMD
+Weverything +Common Var(warn_everything) Warning +Warn for no reason at all + Xassembler Driver Separate
Xlinker Driver Separate
Xpreprocessor Driver Separate
Z Index: optc-gen.awk ================================================================== --- optc-gen.awk (revision 194319) +++ optc-gen.awk (working copy) @@ -25,21 +25,22 @@ # This program uses functions from opt-functions.awk and code from # opt-read.awk. # # Usage: awk -f opt-functions.awk -f opt-read.awk -f optc-gen.awk # [-v header_name=header.h] < inputfile > options.c
# Dump that array of options into a C file. END {
# Record first EnabledBy and LangEnabledBy uses. -n_enabledby = 0; +enabledby[0] = "Weverything"; +n_enabledby = 1; for (i = 0; i < n_langs; i++) { n_enabledby_lang[i] = 0; } for (i = 0; i < n_opts; i++) { enabledby_arg = opt_args("EnabledBy", flags[i]); if (enabledby_arg != "") { n_enabledby_names = split(enabledby_arg, enabledby_names, " && "); if (n_enabledby_names > 2) { print "#error EnabledBy (Wfoo && Wbar && Wbaz) not currently supported" } @@ -72,20 +73,25 @@ for (i = 0; i < n_opts; i++) { }
print "/* This file is auto-generated by optc-gen.awk. */" print "" n_headers = split(header_name, headers, " ") for (i = 1; i <= n_headers; i++) print "#include " quote headers[i] quote print "#include " quote "opts.h" quote print "#include " quote "intl.h" quote
Marc Espie wrote:
In article <k9lo7q$lsq$1@news-rocq.inria.fr>,
Marc <marc.glisse@gmail.com> wrote:
clang a un -Weverything. gcc a toujours refusé de le créer, parce que
les utilisateurs risqueraient de mal l'utiliser et de faire perdre des
heures à tout le monde avec leurs râleries que tel warning ne leur plaît
pas (ils n'avaient qu'à ne pas l'activer !).
Etat d'esprit un peu arrogant, genre on sait mieux que l'utilisateur ce
dont il a envie. Rien de tres surprenant pour gcc donc.
En même temps, à ma connaissance, ils n'ont pas refusé un patch
implémentant -Weverything, ils ont juste refusé de l'écrire. Aussi,
certains développeurs de clang trouvent pénibles les utilisateurs qui
insistent pour râler dès qu'on ajoute un warning, qui se retrouve
automatiquement dans -Weverything, donc ce n'était pas de la parano
de la part de gcc. Donc ne pas oublier l'arrogance des utilisateurs,
pour faire pendant.
Apres, le fonctionnement des warnings dans gcc est un vrai gros bordel.
On ne peut qu'esperer que clang, etant parti de zero plus recemment, ne
fera pas les memes conneries.
Ils s'y sont effectivement pris très différemment. Mais note quand
même que les warnings de gcc ont progressé ces dernières années.
Un mini-patch (à peine testé et sans doute largement améliorable) pour
avoir -Weverything dans gcc-4.8 (aller dans le sous-répertoire gcc/
avant de l'appliquer) :
Index: common.opt
================================================================== --- common.opt (revision 194319)
+++ common.opt (working copy)
@@ -689,20 +689,24 @@ Common Var(warn_unused_variable) Warning
Warn when a variable is unused
Wcoverage-mismatch
Common Var(warn_coverage_mismatch) Init(1) Warning
Warn in case profiles in -fprofile-use do not match
Wvector-operation-performance
Common Var(warn_vector_operation_performance) Warning
Warn when a vector operation is compiled outside the SIMD
+Weverything
+Common Var(warn_everything) Warning
+Warn for no reason at all
+
Xassembler
Driver Separate
Xlinker
Driver Separate
Xpreprocessor
Driver Separate
Z
Index: optc-gen.awk
================================================================== --- optc-gen.awk (revision 194319)
+++ optc-gen.awk (working copy)
@@ -25,21 +25,22 @@
# This program uses functions from opt-functions.awk and code from
# opt-read.awk.
#
# Usage: awk -f opt-functions.awk -f opt-read.awk -f optc-gen.awk
# [-v header_name=header.h] < inputfile > options.c
# Dump that array of options into a C file.
END {
# Record first EnabledBy and LangEnabledBy uses.
-n_enabledby = 0;
+enabledby[0] = "Weverything";
+n_enabledby = 1;
for (i = 0; i < n_langs; i++) {
n_enabledby_lang[i] = 0;
}
for (i = 0; i < n_opts; i++) {
enabledby_arg = opt_args("EnabledBy", flags[i]);
if (enabledby_arg != "") {
n_enabledby_names = split(enabledby_arg, enabledby_names, " && ");
if (n_enabledby_names > 2) {
print "#error EnabledBy (Wfoo && Wbar && Wbaz) not currently supported"
}
@@ -72,20 +73,25 @@ for (i = 0; i < n_opts; i++) {
}
clang a un -Weverything. gcc a toujours refusé de le créer, parce que les utilisateurs risqueraient de mal l'utiliser et de faire perdre des heures à tout le monde avec leurs râleries que tel warning ne leur plaît pas (ils n'avaient qu'à ne pas l'activer !).
Etat d'esprit un peu arrogant, genre on sait mieux que l'utilisateur ce dont il a envie. Rien de tres surprenant pour gcc donc.
En même temps, à ma connaissance, ils n'ont pas refusé un patch implémentant -Weverything, ils ont juste refusé de l'écrire. Aussi, certains développeurs de clang trouvent pénibles les utilisateurs qui insistent pour râler dès qu'on ajoute un warning, qui se retrouve automatiquement dans -Weverything, donc ce n'était pas de la parano de la part de gcc. Donc ne pas oublier l'arrogance des utilisateurs, pour faire pendant.
Apres, le fonctionnement des warnings dans gcc est un vrai gros bordel. On ne peut qu'esperer que clang, etant parti de zero plus recemment, ne fera pas les memes conneries.
Ils s'y sont effectivement pris très différemment. Mais note quand même que les warnings de gcc ont progressé ces dernières années.
Un mini-patch (à peine testé et sans doute largement améliorable) pour avoir -Weverything dans gcc-4.8 (aller dans le sous-répertoire gcc/ avant de l'appliquer) :
Index: common.opt ================================================================== --- common.opt (revision 194319) +++ common.opt (working copy) @@ -689,20 +689,24 @@ Common Var(warn_unused_variable) Warning Warn when a variable is unused
Wcoverage-mismatch Common Var(warn_coverage_mismatch) Init(1) Warning Warn in case profiles in -fprofile-use do not match
Wvector-operation-performance Common Var(warn_vector_operation_performance) Warning Warn when a vector operation is compiled outside the SIMD
+Weverything +Common Var(warn_everything) Warning +Warn for no reason at all + Xassembler Driver Separate
Xlinker Driver Separate
Xpreprocessor Driver Separate
Z Index: optc-gen.awk ================================================================== --- optc-gen.awk (revision 194319) +++ optc-gen.awk (working copy) @@ -25,21 +25,22 @@ # This program uses functions from opt-functions.awk and code from # opt-read.awk. # # Usage: awk -f opt-functions.awk -f opt-read.awk -f optc-gen.awk # [-v header_name=header.h] < inputfile > options.c
# Dump that array of options into a C file. END {
# Record first EnabledBy and LangEnabledBy uses. -n_enabledby = 0; +enabledby[0] = "Weverything"; +n_enabledby = 1; for (i = 0; i < n_langs; i++) { n_enabledby_lang[i] = 0; } for (i = 0; i < n_opts; i++) { enabledby_arg = opt_args("EnabledBy", flags[i]); if (enabledby_arg != "") { n_enabledby_names = split(enabledby_arg, enabledby_names, " && "); if (n_enabledby_names > 2) { print "#error EnabledBy (Wfoo && Wbar && Wbaz) not currently supported" } @@ -72,20 +73,25 @@ for (i = 0; i < n_opts; i++) { }