[grisbi-devel] Grisbi compiler warnings and bugs

Ludovic Rousseau ludovic.rousseau at gmail.com
Fri Oct 7 08:56:49 CEST 2016


Le 6 octobre 2016 à 22:37, Pierre Biava <pierre.biava at orange.fr> a écrit :

> Ludovic Rousseau a écrit le 06/10/2016 à 20:44 :
>
> Bonsoir Ludovic,
>
>
>> Je commence à corriger les warnings. Juste avec clang et le niveau de
>> warnings de base j'ai déjà plusieurs warnings inquiétants.
>>
>> Par exemple j'en ai corrigé 1 qui est aussi un bug :
>> https://github.com/grisbi/grisbi/commit/f28fd44812a9112c6705
>> 68849ae491a73f5e7d4e
>>
>> Des comme ça il doit y en avoir d'autres. Si on peut systématiquement les
> trouver c'est bien. Jusqu'à présent seul le hasard ou si ça conduisait à un
> bug effectif nous les faisait corriger. Après est-ce inquiétant peut-être
> pas. Ça doit plutôt nous faire réfléchir sur la pertinence du code ou la
> nécessité de la fonction.
>

Les compilateurs C sont de mieux en mieux pour repérer ce genre de choses.
Ensuite il y a des outils d'analyse statique qui vont encore plus loin. Par
exemple llvm/clang [1] a une option pour faire ça.

Mon idée est de corriger tous les warnings et ensuite de configurer
>> Travis-CI avec -Werror pour qu'un nouveau warning fasse échouer la
>> compilation automatique.
>>
>
> Ce serait bien. d'y arriver. Toutefois faire attention au type de warning.
> Il est difficile de ne plus en avoir.
>

Oui.
Je ne vais pas corriger tous les warnings remontés en activant toutes les
options.

En parlant de warning j'ai une question par rapport à gcc. Ça fait
> longtemps que gcc ne m'alerte plus sur les variables inutilisées. J'ai
> testé plusieurs options mais aucune ne me rend cette erreur. Si tu avais
> une idée pour réparer ça ce serait bien de modifier le configure.ac pour
> que ça refonctionne.
>

Je ne pense pas que modifier configure.ac soit une bonne idée. Par contre
tu peux te définir CFLAGS avec les bonnes options pour avoir les warnings
dans tes propres compilations.

Pour les variables inutilisées c'est -Wunused-variable qu'il faut utiliser
(avec gcc). L'option est incluse dans -Wall

$ cat unused.c
#include <stdio.h>

int main(void)
{
    int pouet;
    return 0;
}

$ CFLAGS="-Wunused-variable" make unused
cc -Wunused-variable    unused.c   -o unused
unused.c: In function ‘main’:
unused.c:5:6: warning: unused variable ‘pouet’ [-Wunused-variable]
  int pouet;
      ^


Personnellement j'utilise CFLAGS="-Wall -g -O2 -Wextra -pipe
-funsigned-char -fstrict-aliasing -Wchar-subscripts -Wundef -Wshadow
-Wcast-align -Wwrite-strings -Wunused -Wuninitialized -Wpointer-arith
-Wredundant-decls -Winline -Wformat -Wformat-security -Wswitch-enum
-Winit-self -Wmissing-include-dirs -Wempty-body -fdiagnostics-color=auto
-Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition
-Wbad-function-cast -Wnested-externs -Wmissing-declarations"
Et ça génère un très gros paquet de warnigngs en compilant grisbi.

Pour l'instant j'ai corrigé les warnings signalés par gcc en ne passant
_aucune_ option. Donc les warnings qui signalent de vrais problèmes.

à+

[1] http://clang-analyzer.llvm.org/

-- 
 Dr. Ludovic Rousseau
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listes.grisbi.org/pipermail/devel/attachments/20161007/bc2aefd7/attachment.html>


More information about the devel mailing list