[grisbi-devel] Grisbi compiler warnings and bugs

Rémi Cardona remi at gentoo.org
Fri Oct 21 08:36:36 CEST 2016


Le 06/10/2016 à 20:44, Ludovic Rousseau a écrit :
> Bonsoir,
> 
> 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/f28fd44812a9112c670568849ae491a73f5e7d4e
> 
> 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.

C'est une super idée! Depuis le début, je compilais grisbi avec pas mal
d'options mais le passage à gtk3 a généré tellement de nouveaux warnings
que j'ai laissé tomber (honte sur moi). Idem pour static-analyzer de
clang, il m'a permis de corriger énormément de problèmes alors que le
projet était tout jeune. J'imagine qu'il a encore du s'améliorer depuis
et qu'il trouve moult nouveaux problèmes :)

Concernant les warnings, je suggère de s'inspirer de ce qui est fait
dans la galaxie Xorg:

* une macro XORG_TESTSET_CFLAG[1] qui teste qu'une option de compilateur
marche (du moins, ne fait pas planter la compilation d'un fichier vide)
* une macro XORG_COMPILER_FLAGS[2] qui définit une belle liste de
warnings à activer[3], et de warnings systématiquement transformés en
erreurs[4]
* une macro XORG_STRICT_OPTION[5] qui ajoute l'option
--enable-strict-compilation au ./configure pour facilement activer -Werror

Cette dernière option n'est pas activée par défaut afin de ne pas casser
inutilement la compilation de vieilles versions de paquets Xorg avec de
nouveaux compilateurs. Lorsqu'une personne travaille sur le code de
Xorg, il/elle n'a donc qu'à activer cette option pour avoir le niveau
maximum de sévérité.

Le code des macros m4 de Xorg est assez compliqué, voire velu, mais il
s'explique par le nombre d'OS et d'architectures (donc de compilateurs)
supportés, ainsi que par le nombre de paquets l'utilisant (20+
bibliothèques, 10+ pilotes, 30+ outils, le serveur X, etc).

J'ai pris Xorg parce que je connais plutôt bien ce projet, mais si
d'autres choses existent ailleurs (je pense à autoconf-archive
notamment[6][7]), allons-y!

Rémi

[1]
https://cgit.freedesktop.org/xorg/util/macros/tree/xorg-macros.m4.in#n1540
[2]
https://cgit.freedesktop.org/xorg/util/macros/tree/xorg-macros.m4.in#n1633
[3]
https://cgit.freedesktop.org/xorg/util/macros/tree/xorg-macros.m4.in#n1669
[4]
https://cgit.freedesktop.org/xorg/util/macros/tree/xorg-macros.m4.in#n1702
[5]
https://cgit.freedesktop.org/xorg/util/macros/tree/xorg-macros.m4.in#n1765
[6] https://cgit.freedesktop.org/systemd/systemd/tree/configure.ac#n148
[7]
http://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html#ax_append_compile_flags


More information about the devel mailing list