nouveau dans les NewsGroups Google, je me r=E9jouis de trouver des
TCLeurs, Pythoniens et autres C++eurs :o)
Je suis =E0 la recherche d'un bon alalyseur de code C++ (genre PC Lint)
afin d'int=E9grer un bon vieux contr=F4le de mon code avant de le
compiler... une =E9tourderie =E9tant si vite arriv=E9e O:-}
Merci d'avance pour votre aide !
Yannick.
PS : si c'est gratuit, c'est encore mieux pour mon portefeuille...
J'ai du mal a voir l'utilité de ce type d'avertissement dans le cadre du bout de code ci-dessus (avec une longueur que je suppose membre de la classe).
Si la classe en question n'est pas triviale, elle risque d'évoluer, et la valeur de "m_MaLongueurDeTableauDoctet" pourrait très bien, un jour, se retrouver égale à 0, ou supérieure à la taille de "m_MonTableauDoctets".
Pour la valeur 0, je suis d'accord. Mais si la valeur de m_MaLongueurDeTableauDoctet venait a devenir un jour superieure a la taille de MonTableauDoctets, et ceci sans changer le nom de la variable, la maintenance de la classe non triviale va devenir un plaisir.
Ce code me paraît effectivement incorrect :
- Si on est absolument sûr que la valeur de "m_MaLongueurDeTableauDoctet" est forcément correcte, il faut expliquer pourquoi dans un commentaire.
ok, mais est-ce suffisant pour faire taire l'outil d'analyse (j'en doute).
- Un assert() ne serait pas inutile -- ne serait-ce que assert (m_MaLongueurDeTableauDoctet>0)
ok, et ca devrait suffire a faire taire l'outil s'il n'est pas trop stupide (je ne connais pas le fonctionnement de ce genre d'outil).
- On a deux variables qui me semblent liées : m_MonTableauDoctets et m_MaLongueurDeTableauDoctet. Elles devraient AMHA être regroupées dans une classe :
Et ca doit (devrait?) déclencher encore l'avertissement de l'outil d'analyse (et ca semble inutile).
J'ai l'impression que dans une classe triviale, on va vouloir faire taire l'outil parce que dans ce cas on s'est deja assuré que 'longueur' est bien correcte, et dans une classe non-triviale, il faudra revoir le design pour limiter la complexité, et c'est assez éloigné de la premiere correction valide (assert) pour faire taire le message.
Bref, mon opinion vu de loin, sans connaitre l'outil, était qu'on allait faire face a une avalanche de warnings pas forcement pertinents. Mais bon, je veux bien remedier a mon ignorance s'il y a une documentation sur les capacites de ces analyseurs quelque part... un lien ? merci.
In news:sllka2hdbm5qm5oq44lud27pmqko0t5pit@4ax.com,
Fabien LE LEZ <gramster@gramster.com> typed:
On Tue, 4 Jul 2006 13:49:38 +0200, "Michel Decima"
<michel.decima@francetelecom.com>:
J'ai du mal a voir l'utilité de ce type d'avertissement dans le
cadre du bout de code ci-dessus (avec une longueur que je suppose
membre de
la classe).
Si la classe en question n'est pas triviale, elle risque d'évoluer, et
la valeur de "m_MaLongueurDeTableauDoctet" pourrait très bien, un
jour, se retrouver égale à 0, ou supérieure à la taille de
"m_MonTableauDoctets".
Pour la valeur 0, je suis d'accord. Mais si la valeur de
m_MaLongueurDeTableauDoctet venait a devenir un jour superieure
a la taille de MonTableauDoctets, et ceci sans changer le nom de la
variable, la maintenance de la classe non triviale va devenir un plaisir.
Ce code me paraît effectivement incorrect :
- Si on est absolument sûr que la valeur de
"m_MaLongueurDeTableauDoctet" est forcément correcte, il faut
expliquer pourquoi dans un commentaire.
ok, mais est-ce suffisant pour faire taire l'outil d'analyse (j'en doute).
- Un assert() ne serait pas inutile -- ne serait-ce que
assert (m_MaLongueurDeTableauDoctet>0)
ok, et ca devrait suffire a faire taire l'outil s'il n'est pas trop stupide
(je ne connais pas le fonctionnement de ce genre d'outil).
- On a deux variables qui me semblent liées : m_MonTableauDoctets et
m_MaLongueurDeTableauDoctet. Elles devraient AMHA être regroupées dans
une classe :
Et ca doit (devrait?) déclencher encore l'avertissement de l'outil d'analyse
(et ca semble inutile).
J'ai l'impression que dans une classe triviale, on va vouloir faire taire
l'outil
parce que dans ce cas on s'est deja assuré que 'longueur' est bien correcte,
et dans une classe non-triviale, il faudra revoir le design pour limiter la
complexité, et c'est assez éloigné de la premiere correction valide (assert)
pour faire
taire le message.
Bref, mon opinion vu de loin, sans connaitre l'outil, était qu'on allait
faire face
a une avalanche de warnings pas forcement pertinents. Mais bon, je veux
bien remedier a mon ignorance s'il y a une documentation sur les capacites
de ces analyseurs quelque part... un lien ? merci.
J'ai du mal a voir l'utilité de ce type d'avertissement dans le cadre du bout de code ci-dessus (avec une longueur que je suppose membre de la classe).
Si la classe en question n'est pas triviale, elle risque d'évoluer, et la valeur de "m_MaLongueurDeTableauDoctet" pourrait très bien, un jour, se retrouver égale à 0, ou supérieure à la taille de "m_MonTableauDoctets".
Pour la valeur 0, je suis d'accord. Mais si la valeur de m_MaLongueurDeTableauDoctet venait a devenir un jour superieure a la taille de MonTableauDoctets, et ceci sans changer le nom de la variable, la maintenance de la classe non triviale va devenir un plaisir.
Ce code me paraît effectivement incorrect :
- Si on est absolument sûr que la valeur de "m_MaLongueurDeTableauDoctet" est forcément correcte, il faut expliquer pourquoi dans un commentaire.
ok, mais est-ce suffisant pour faire taire l'outil d'analyse (j'en doute).
- Un assert() ne serait pas inutile -- ne serait-ce que assert (m_MaLongueurDeTableauDoctet>0)
ok, et ca devrait suffire a faire taire l'outil s'il n'est pas trop stupide (je ne connais pas le fonctionnement de ce genre d'outil).
- On a deux variables qui me semblent liées : m_MonTableauDoctets et m_MaLongueurDeTableauDoctet. Elles devraient AMHA être regroupées dans une classe :
Et ca doit (devrait?) déclencher encore l'avertissement de l'outil d'analyse (et ca semble inutile).
J'ai l'impression que dans une classe triviale, on va vouloir faire taire l'outil parce que dans ce cas on s'est deja assuré que 'longueur' est bien correcte, et dans une classe non-triviale, il faudra revoir le design pour limiter la complexité, et c'est assez éloigné de la premiere correction valide (assert) pour faire taire le message.
Bref, mon opinion vu de loin, sans connaitre l'outil, était qu'on allait faire face a une avalanche de warnings pas forcement pertinents. Mais bon, je veux bien remedier a mon ignorance s'il y a une documentation sur les capacites de ces analyseurs quelque part... un lien ? merci.
kanze
Chanclou wrote:
Cela m'intéresse aussi. Actuellement, je travaille sur de la génération de code. Et l'intérêt d'avoir une analyse du code (comme java c'est le faire me semble-t-il !) est de pouvoir analyser ce que l'utilisateur souhaite garder (ce qu'il a modifié) et ce qui est à regénérer (tout le reste).
Ce qu'on garde, c'est ce qu'on n'a pas généré, non ? Rational Rose sait faire la distinction, et je ne vois pas pourquoi la technique qu'il utilise (des commentaires spéciaux) ne marcherait pas ailleurs.
Exemple pratique je génère une classe de base et une dérivée d'implémentation. Via mon modèle je rajoute une nouvelle méthode à ma classe. La classe de base est regénérée de A à Z, elle intègre facilement l'ajout. En revanche, dans la classe d'implémentation, si je n'ai pas d'analyse de code, je suis incapable d'insérer la déclaration et l'implémentation minimale de la méthode au bon endroit sans risquer d'altérer quelquechose.
Oui et non. Tout dépend d'où et de comment l'utilisateur a inséré l'implémentation et les extensions. Dans le cas de Rational Rose, on prévoit les endroits, au moyen des commentaires bien précis ; si l'utilisateur respecte les règles, ses ajoutes se trouveront tous aux endroits prévus, et ne se perdront pas.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Chanclou wrote:
Cela m'intéresse aussi. Actuellement, je travaille sur de la
génération de code. Et l'intérêt d'avoir une analyse du code
(comme java c'est le faire me semble-t-il !) est de pouvoir
analyser ce que l'utilisateur souhaite garder (ce qu'il a
modifié) et ce qui est à regénérer (tout le reste).
Ce qu'on garde, c'est ce qu'on n'a pas généré, non ? Rational
Rose sait faire la distinction, et je ne vois pas pourquoi la
technique qu'il utilise (des commentaires spéciaux) ne
marcherait pas ailleurs.
Exemple pratique je génère une classe de base et une dérivée
d'implémentation. Via mon modèle je rajoute une nouvelle
méthode à ma classe. La classe de base est regénérée de A à Z,
elle intègre facilement l'ajout. En revanche, dans la classe
d'implémentation, si je n'ai pas d'analyse de code, je suis
incapable d'insérer la déclaration et l'implémentation
minimale de la méthode au bon endroit sans risquer d'altérer
quelquechose.
Oui et non. Tout dépend d'où et de comment l'utilisateur a
inséré l'implémentation et les extensions. Dans le cas de
Rational Rose, on prévoit les endroits, au moyen des
commentaires bien précis ; si l'utilisateur respecte les
règles, ses ajoutes se trouveront tous aux endroits prévus, et
ne se perdront pas.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Cela m'intéresse aussi. Actuellement, je travaille sur de la génération de code. Et l'intérêt d'avoir une analyse du code (comme java c'est le faire me semble-t-il !) est de pouvoir analyser ce que l'utilisateur souhaite garder (ce qu'il a modifié) et ce qui est à regénérer (tout le reste).
Ce qu'on garde, c'est ce qu'on n'a pas généré, non ? Rational Rose sait faire la distinction, et je ne vois pas pourquoi la technique qu'il utilise (des commentaires spéciaux) ne marcherait pas ailleurs.
Exemple pratique je génère une classe de base et une dérivée d'implémentation. Via mon modèle je rajoute une nouvelle méthode à ma classe. La classe de base est regénérée de A à Z, elle intègre facilement l'ajout. En revanche, dans la classe d'implémentation, si je n'ai pas d'analyse de code, je suis incapable d'insérer la déclaration et l'implémentation minimale de la méthode au bon endroit sans risquer d'altérer quelquechose.
Oui et non. Tout dépend d'où et de comment l'utilisateur a inséré l'implémentation et les extensions. Dans le cas de Rational Rose, on prévoit les endroits, au moyen des commentaires bien précis ; si l'utilisateur respecte les règles, ses ajoutes se trouveront tous aux endroits prévus, et ne se perdront pas.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Fabien LE LEZ
On Tue, 4 Jul 2006 15:48:21 +0200, "Michel Decima" :
la maintenance de la classe non triviale va devenir un plaisir.
Yep. C'est pour ça que je dis que le code est incorrect.
- Si on est absolument sûr que la valeur de "m_MaLongueurDeTableauDoctet" est forcément correcte, il faut expliquer pourquoi dans un commentaire.
ok, mais est-ce suffisant pour faire taire l'outil d'analyse (j'en doute).
Non. Il faut que le commentaire ait une forme spéciale, pour dire à l'outil d'analyse de se taire.
Bref, mon opinion vu de loin, sans connaitre l'outil, était qu'on allait faire face a une avalanche de warnings pas forcement pertinents.
Effectivement...
On Tue, 4 Jul 2006 15:48:21 +0200, "Michel Decima"
<michel.decima@francetelecom.com>:
la maintenance de la classe non triviale va devenir un plaisir.
Yep. C'est pour ça que je dis que le code est incorrect.
- Si on est absolument sûr que la valeur de
"m_MaLongueurDeTableauDoctet" est forcément correcte, il faut
expliquer pourquoi dans un commentaire.
ok, mais est-ce suffisant pour faire taire l'outil d'analyse (j'en doute).
Non. Il faut que le commentaire ait une forme spéciale, pour dire à
l'outil d'analyse de se taire.
Bref, mon opinion vu de loin, sans connaitre l'outil, était qu'on allait
faire face a une avalanche de warnings pas forcement pertinents.
On Tue, 4 Jul 2006 15:48:21 +0200, "Michel Decima" :
la maintenance de la classe non triviale va devenir un plaisir.
Yep. C'est pour ça que je dis que le code est incorrect.
- Si on est absolument sûr que la valeur de "m_MaLongueurDeTableauDoctet" est forcément correcte, il faut expliquer pourquoi dans un commentaire.
ok, mais est-ce suffisant pour faire taire l'outil d'analyse (j'en doute).
Non. Il faut que le commentaire ait une forme spéciale, pour dire à l'outil d'analyse de se taire.
Bref, mon opinion vu de loin, sans connaitre l'outil, était qu'on allait faire face a une avalanche de warnings pas forcement pertinents.
Effectivement...
Sylvain
Chanclou wrote on 04/07/2006 12:14:
comme java c'est le faire me semble-t-il
si tu penses au 'refactor' de Eclipse, c'est un tool d'Eclipse, pas une fonctionnalité du langage (on pourrait implémenter le même type d'outil pour tout langage objet).
Sylvain.
Chanclou wrote on 04/07/2006 12:14:
comme java c'est le
faire me semble-t-il
si tu penses au 'refactor' de Eclipse, c'est un tool d'Eclipse, pas une
fonctionnalité du langage (on pourrait implémenter le même type d'outil
pour tout langage objet).
si tu penses au 'refactor' de Eclipse, c'est un tool d'Eclipse, pas une fonctionnalité du langage (on pourrait implémenter le même type d'outil pour tout langage objet).
je me réjouis de trouver des TCLeurs, Pythoniens et autres C++eurs :o)
Je suis à la recherche d'un bon analyseur de code C++ (genre PC Lint) afin d'intégrer un bon vieux contrôle de mon code avant de le compiler... une étourderie étant si vite arrivée O:-}
je me réjouis de trouver des
TCLeurs, Pythoniens et autres C++eurs :o)
Je suis à la recherche d'un bon analyseur de code C++ (genre PC Lint)
afin d'intégrer un bon vieux contrôle de mon code avant de le
compiler... une étourderie étant si vite arrivée O:-}
je me réjouis de trouver des TCLeurs, Pythoniens et autres C++eurs :o)
Je suis à la recherche d'un bon analyseur de code C++ (genre PC Lint) afin d'intégrer un bon vieux contrôle de mon code avant de le compiler... une étourderie étant si vite arrivée O:-}