DÉTECTION DES VARIABLES INUTILISÉES DANS UN PROJET VISUAL BASIC

cognicase Messages postés 63 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 13 juillet 2005 - 11 mars 2003 à 15:05
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010 - 8 août 2006 à 18:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/6449-detection-des-variables-inutilisees-dans-un-projet-visual-basic

cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
8 août 2006 à 18:20
Les variables inutilisées sont les variables qui ne sont jamais accedé en lecture (utile).

Donc ecrire :
"Private Blabla as String = String.Empty"
ne pose pas de probleme dans la detection : on ecris dans Blabla mais on ne lie jamais Blabla !
Donc elle est inutile

Affinage 1 :

Detection des acces en ecriture qui ont des effet de bords sur le reste :
ex :
----------------------
Private bonhomme as Perso = Toto.GetInstance()
----------------------
Ce code pourrait modifié des variables static (genre si Toto est un singleton)
Cependant bonhomme n'est jamais utilisé

Affinage 2 :

Pour affiner : on regarde si les acces en lecture d'une variable ne sers qu'a la construire directement, alors on ne compte pas ces acces :

exemple 1 :
----------------------
i as Integer = 42
i = i + 11
----------------------
La variable 'i' n'a servit a rien et pourtant a eu un acces en lecture.
Il ne faut donc pas comtper ce genre d'acces en lecture, si il ne reste plus d'acces en lecture alors la variable est inutile.

exemple 2 :
----------------------
s as String = "a"
s = add_str_in_dico_and_return(s) + "b"
----------------------
s est utilise pour construire s mais genere un effet de bord avec la fonction add_ ...

Affinage 3 :
Meme chose que l'affinage precedent mais les variables de boucle ne sont jamais inutilisées bien qu'elles ne soient jamais accédées en lecture d'apres les affinages precedent

Affinage 4 :
Trouver les groupe de variables qui se construisent ensemble mais qui au final ne servent a rien
exemple :
----------------------
i as integer = 1
j as integer = 1
k as integer

for t = 0 to 10 'Desole je me rappelle plsu bcp de la syntaxe du vb
k = i + j
i = j + k
j = k + i
next

'Si aucune des variables n'est lu ici alors i j et k sont inutiles
----------------------


Il devient vite assez complique de trouver les variables inutiles, ca fait appelle au graphes etc...
ABL-Online Messages postés 62 Date d'inscription dimanche 16 septembre 2001 Statut Membre Dernière intervention 21 septembre 2006
5 août 2006 à 19:44
Cette source est maintenant devenue obsolète avec le Visual Studio 2005 enfin si on peux dire ..., puisque maintenant il renseigne systématiquement les variables déclarées et inutilisées dans un projets.

Mais bon encore faut-il ne pas faire ce genre d'erreur qui pour moi a mon sens n'en est pas une :

Private Blabla as String = String.Empty

Dans ce cas présent on assigne donc une valeur et de ce fait elle est utilisée et n'est plus référencée comme inutilisée alors qu'à la longue oui lui assignera peut-être jamais de valeur quand on modifie le code pour l'améliorer par exemple et donc à force il arrive que l'on oublie de supprimer cette déclaration.

Par contre pour les références , il peux supprimer toutes les références ajoutées par la suite pour le quel on s'en est jamais servis au final.

Et là c'est génial, ça évite d'avoir des dépendances déclarées qui sont totalement inutiles.

Salutations à tous,

Didier Lombet
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
24 janv. 2004 à 09:08
Ca ne parcours pas les Ctl ?
Et ca fait remonter les déclarations API comme variable inutilisés.

Est ce que l'on pourrait afficher également la liste des variables utilisées, dans quel module, et le nombre de fois quelle sont utilisées.
Ca peut donner des idées d'optimisation par exemple si l'on calcule une variable dans une boucle ou des trucs comme ca.

Merci

A+
Afyn
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
22 nov. 2003 à 17:14
Comme Rome ne s'est pas fait en un jour, il arrive souvent que l'on travaille par étape sur un projet : un jour ceci, un jour celà, etc.
Aussi ce serait bien d'ajouter une option enregistrer voire imprimer le résultat afin de pouvoir apporter les corrections nécessaires au code sans être obligé de relancer la détection chaque jour.
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
10 nov. 2003 à 18:23
Je viens de trouver ce aue je cherchais l'outil dont je parlais est le mme aue celui aui sert a dire sous caml si tellle ou telle valeur est filtree ou non !

Par exemple en caml on fait l'eauivalent d'un select case en vb

Si je fait :

Select case UnEntier

Case 1 -> retourner 1
Case 2 a 10 -> retourner 2
Case >10 -> retourner 3

End select

il verifie aue la syntaxe est bonne mais que je filtre bien toute les valeur possibles de la "variable" ( C'est pas vraiment une variable mais on dira que pour l'exemple s'en est une )
donc la il me dira : Warning certaine valeur ne seront pas filtre ( en caml lorsaue l'on met l'equivqlent du select case il faut obligatoirement que le code d'une case se declenche )
Et en plus il me donne un exmple de valeur ( en fonction du type de la variable ) qui ne sera pas filtre !

la compilation de ce systeme verifie donc si la porte de la variable est entierement teste. Il serait interessant de faire un code qui "reflechi"
sur les affectations au variable , si le calcul est toujours bon, si on ne risaue pas une erreur de depassement...

Bref ambitieux !
gabchampagne Messages postés 216 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 5 mai 2004
6 nov. 2003 à 18:53
c'est éxactement la question que je me pose moi aussi.
Rrominet Messages postés 133 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 24 novembre 2014 1
8 juil. 2003 à 20:36
Pas mal comme prog !! J'ai un énorme projet VB et je trouve tous les jours des variables inutilisées (parfois de moi, parfois non)...

Par contre, une question comme ça, si tu déclares une variables 2 fois (une fois en global et une fois dans une fonction par exemple), comment ton prog le gère-t-il ?Si tu n'as jamais utilisé la variable globale et toujours celle de la fonction, il te dira qu'elle est utilisée alors qu'elle ne l'est pas forcément. Si tu me suis ? ;-)

Mais bon des variables dans ce cas s'il y en a beaucoup en double, il vaut mieux réapprendre à développer :)

En tout cas merci pour ta source !! Je teste ça dès demain ;-)
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
25 juin 2003 à 22:26
As-tu pensé à faire une appli qui enregistre tout le code d'un projet, "réflechit", et ensuite affiche les variables qui peuvent ( après une suite LOGIQUE et POSSIBLE de procédures) subir une erreur de dépassement ?
Moi l'idée me trote dans la tête et ton appli va surement me servir de tremplin. Ca fait un bon point de départ ( je commencerai pas a zero ! )...
Cependant, bien que l'idée semble simple ( ah si si, je vous jure !), la réalisation risque d'etre chaude !
A suivre...

-={[ ZeroCool ]}=-

P.S. : Je reviens noter !
fluminis Messages postés 73 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 20 juin 2005
10 mai 2003 à 22:41
cool c'est ingenieux et bien pensé
merci et continu la tete dans le guidon :o)
akami Messages postés 6 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 4 décembre 2006
19 avril 2003 à 18:15
très belle imagination
vraiment lourd quand il y a beaucoup de variables

---- ak
cs_lionalger Messages postés 18 Date d'inscription mercredi 25 décembre 2002 Statut Membre Dernière intervention 1 avril 2006
19 mars 2003 à 05:29
Grand Bravo pour ton programme
Mais comme je suis fatique de revoir mes sources
j'aurais souhaite que tu vas plus lion en mettant des commetaires sur les lignes
grand merçi
cs_Cyrus Messages postés 47 Date d'inscription mercredi 21 novembre 2001 Statut Membre Dernière intervention 2 avril 2007
13 mars 2003 à 13:45
Merci à tous pour vos encouragements. J'ai mis à jour la source pour enlever un problème de détection que m'avais mentionné frawid, et tout roule désormais pour le mieux. Sur ce, bonne prog' !!!

Cyrus, le programmeur avec la tête dans le guidon.
frawid Messages postés 47 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 16 mars 2008
12 mars 2003 à 19:06
Ce programme est supper bien et mérite 9/10. Bravos Cyrus
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
11 mars 2003 à 17:48
Je trouve aussi ce programme génial et à première vue bien structuré.
Je déplore juste les commentaires en anglais qui m'oblige à sortir mon vieux gros dictionnaire...
cognicase Messages postés 63 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 13 juillet 2005
11 mars 2003 à 15:05
Super prog. je le trouve cool au boute. J'ai pas ben ben d'expérience mais je peux te dire que je le trouve super bon ton prog. j'ai fait un test sur un mega projet pis ca fonctionne .. on ne s'appercoit pas toujours que l'on as fait des déclaration non utile faq je le trouve trippant Merci ben gros ... j'ai donner une note de 9/10
Rejoignez-nous