Question

Comme vétuste et douloureux comme il est - je travaille dans une entreprise qui continue à utiliser activement VB6 pour un grand projet. En fait, il y a 18 mois, nous sommes heurtés à la limite d'identification 32k.

Je ne souhaite pas renoncer à la grande base de code et tout réécrire en .NET nous avons cassé notre application dans un exécutable principal et plusieurs fichiers DLL de soutien. Cette semaine, nous avons couru dans la limite 32k à nouveau.

Le problème que nous avons est que aucun outil, nous pouvons trouver nous dire combien d'identifiants uniques notre source utilise. Nous avons aucun moyen précis pour évaluer la façon dont nos efforts réduisent le nombre d'identifiants ou la façon dont nous sommes proches de la limite avant de l'atteindre.

Quelqu'un sait-il d'un outil qui analyse la source d'un projet et le retour des mesures et des statistiques précises?

Était-ce utile?

La solution

OK. Le Metrics Project Viewer qui fait partie de l'outil Project Analyzer de Aivosto fera exactement ce que vous voulez. J'ai inclus une capture d'écran et aussi le lien vers la liste des indicateurs qui comprend nombre de variables, etc.

Metrics Liste


(source: aivosto.com )

Autres conseils

La société pour laquelle je travaille a aussi un grand projet VB6 qui a rencontré la limite d'identification. J'ai développé un moyen de compter avec précision le nombre d'identificateurs restants, et cela a été intégré dans notre processus de construction pour ce projet.

Après avoir essayé plusieurs outils sans succès, je me suis finalement rendu compte que le VB6 IDE lui-même sait exactement combien d'identifiants il a reste. En fait, l'IDE VB6 renvoie une erreur « de mémoire » lorsque vous ajoutez une variable delà de sa limite.

Profitant de ce fait, je l'ai écrit un VB6 projet Add-In qui compile d'abord le projet actuellement chargé dans l'IDE, ajoute des variables nom unique du projet jusqu'à ce qu'il renvoie une erreur. Lorsqu'une erreur est relevée, il enregistre le nombre d'identifiants ajoutés avant l'erreur que le nombre d'identificateurs restants.

Ce numéro est enregistré dans le fichier dans un endroit connu pour notre processus automatisé de construction, qui se lit alors ce numéro et il rend compte à l'équipe de développement. Quand il est en dessous d'une valeur que nous sommes à l'aise avec, nous programmons un certain temps de refactoring et passer plus de code de ce projet dans les projets de DLL. Nous utilisons cette production depuis plusieurs années, et a prouvé être un processus fiable.

Pour répondre directement à la question, à l'aide d'un Add-In est la seule façon que je connaisse de mesurer avec précision le nombre d'identificateurs restants. Bien que je ne peux pas partager le code Add-In notre projet utilise, je peux dire qu'il n'y a pas beaucoup de code en cause, et il n'a pas fallu longtemps pour se développer.

Microsoft a un guide décent pour savoir comment créer un Add-In, qui peut vous aider à démarrer: https://support.microsoft.com/en-us/kb/189468

Voici quelques détails importants spécifiques à des identificateurs de comptage:

  • L'IDE VB6 ne toujours jeter une erreur quand sur des identifiants jusqu'à ce que le projet chargé en cours a été compilé. Notre complément ne programme avant d'ajouter des identificateurs pour garantir un décompte précis. Si le projet ne peut pas être compilé, puis un décompte précis ne peut être obtenu.
  • Il y a 32.500 identifiants disponibles à un nouveau projet VB6 vide.
  • Seuls les noms d'identificateurs uniques comptent. Deux variables locales avec le même nom dans deux routines différentes ne constituent qu'un seul identifiant.

CodeSmart par AxTools est très bonne.
text alt
(source: axtools.com )

Cheat - créer une classe non utilisée avec des variables uniques en #### il. Utilisez Excel ou quelque chose pour générer les noms de variables uniques par ordre alphabétique. Effacez la classe du projet quand vous frappez la limite, ou commenter des blocs de 100 variables uniques ..

Je préfère pencher sur le compilateur (qui définit combien de variables sont trop nombreuses) que sur certains outils 3ème partie de toute façon.

(oh crud, désolé de nécro - n'a pas remarqué les dates)

Vous pouvez obtenir ce à partir d'un outil qui extrait des identifiants de code VB6. Ensuite, tout ce que vous auriez à faire est de trier la liste, d'éliminer les doublons et mesurer la taille de la liste. Nous avons un recherche code source qui casse le code source en jetons de langue ( « Lexes ») , avec certains de ces jetons étant exactement ces identifiants. Cela contient exactement les données que vous voulez.

Mais peut-être il y a une autre façon de résoudre votre problème: savoir quels sont les noms de variables qui se produisent rarement et de les remplacer par un ensemble de noms standard (par exemple, « temp »). Donc ce que vous voulez vraiment est un compte du nombre de chaque nom de variable de sorte que vous pouvez trier pour « un petit nombre de références ». Les mêmes données peuvent fournir ces analyseurs lexicaux informations.

Ensuite, tout ce dont vous avez besoin est un outil pour renommer les identificateurs faible occurrence à quelque chose de l'ensemble standard. Nous offrons obfuscators que remplacer un nom par un autre qui pourrait probablement le faire.

[octobre 2014 mise à jour]. Juste eu une longue conversation avec quelqu'un avec ce problème. Il se trouve qu'il ya une réponse assez conceptuelle sur laquelle fonder un outil, et que l'on appelle enregistrer coloration , qui alloue un nombre fixe de registres à un nombre arbitraire d'opérandes. Cela fonctionne en calculant un « graphe d'interférence » sur opérandes; et deux opérandes qui ne « interférant » peuvent être attribués le même registre. On pourrait l'utiliser pour allouer 2 ^ 16 noms disponibles de noms de variables à un nombre arbitraire d'identificateurs, si le graphe d'interférence est pas assez mauvais. Je pense que ce n'est pas. YMMV, et quelqu'un doit encore construire un tel outil, nécessitant probablement un analyseur VB6 et les machines à calculer un tel graphe. [Regarde mes bio].

Il semble que DevPartner avait ce genre d'analyse de code de Compuware. Je ne sais pas si la version actuelle prend en charge encore Visual Basic 6.0. (Mais au moins il y a un essai de 14 jours est disponible)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top