Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

Catégorie :Optimisation du code Niveau : Initié Date de création : 11/03/2003 Date de mise à jour : 18/03/2003 09:59:32 Vu / téléchargé: 5 890 / 614

Note :
8,86 / 10 - par 7 personnes
8,86 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Détection des variables inutilisées dans un projet Visual Basic - v1.1
Conception/développement : Vincent Dummer (cyrus@mageos.com)

Description :
-------------
Cette application permet de détecter tous les constantes / variables / types / énumérations / subs / fonctions déclarés, mais non utilisées, dans le code d'un projet Visual Basic.

Format du résultat :
--------------------
Type de l'élément inutilisé-[Module]-[Procédure]-Nom de l'élément inutilisé

Exemple 1 : LocalVariable-frmMain-Form_Load-i
=> La variable i a été déclarée en tant que locale dans l'évènement Form_Load du module frmMain mais n'est pas utilisée.

Exemple 2 : GlobalSub-maSub
=> La procédure maSub a été déclarée en tant que global mais n'a pas été utilisée.

Principe de fonctionnement du programme :
-----------------------------------------
Tout d'abord, on scanne le fichier projet VBP afin de trouver tous les forms/modules contenant le code du projet. Ensuite, on y effectue les deux passes suivantes :

- PREMIERE PASSE : On répertorie toutes les déclarations du projet et on les stocke dans une collection.
- DEUXIEME PASSE : On crée un compteur pour chaque variable de la collection. Ensuite, on scanne chaque ligne du code pour compter ces variables.

Enfin, on affiche toutes les variables qui n'ont été comptées que zéro fois et on avertit l'utilisateur de la fin du traitement.

NB : Ceci est uniquement le principe de fonctionnement. Dans le code, vous vous rendrez compte des nombreux cas particuliers gérés par cette application.

Limitations :
-------------
- La lenteur du traitement, pour peu que le projet contienne beaucoup de variables.
- Les modules de classe ne sont pas traités pendant la vérification.

Bugs connus :
-------------
Les évènements inconnus seront indiqués comme étant non déclarés.

Historique de versions:
-----------------------
V1.0 : - Version initiale

V1.1 : - Suppression d'un bug de détection
       - Augmentation du nombre d'évènements connus

Special Bafreu à :
------------------
La guilde du figuier marin (Microman, Chaz, Gailin le fort, Simong, Glou) et à la Tartiflette Power Team (Tutu des montagnes, Karine, Sammy des bois et la mère Fred) !!!
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de cognicase le 11/03/2003 15:05:35

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

signaler à un administrateur
Commentaire de PROGRAMMIX le 11/03/2003 17:48:06

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...

signaler à un administrateur
Commentaire de frawid le 12/03/2003 19:06:18

Ce programme est supper bien et mérite 9/10. Bravos Cyrus

signaler à un administrateur
Commentaire de Cyrus le 13/03/2003 13:45:00

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.

signaler à un administrateur
Commentaire de lionalger le 19/03/2003 05:29:22

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

signaler à un administrateur
Commentaire de akami le 19/04/2003 18:15:22

très belle imagination
vraiment lourd quand il y a beaucoup de variables
                                            
                    ---- ak

signaler à un administrateur
Commentaire de fluminis le 10/05/2003 22:41:43

cool c'est ingenieux et bien pensé
merci et continu la tete dans le guidon :o)

signaler à un administrateur
Commentaire de Zeroc00l le 25/06/2003 22:26:49

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 !

signaler à un administrateur
Commentaire de Rrominet le 08/07/2003 20:36:52

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 ;-)

signaler à un administrateur
Commentaire de gabchampagne le 06/11/2003 18:53:44

c'est éxactement la question que je me pose moi aussi.

signaler à un administrateur
Commentaire de Zeroc00l le 10/11/2003 18:23:31

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 !

signaler à un administrateur
Commentaire de PROGRAMMIX le 22/11/2003 17:14:13

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.

signaler à un administrateur
Commentaire de Afyn le 24/01/2004 09:08:56

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

signaler à un administrateur
Commentaire de ABL-Online le 05/08/2006 19:44:10

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

signaler à un administrateur
Commentaire de Zeroc00l le 08/08/2006 18:20:19

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...


Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.