2009-03-01 9 views
5

On m'a récemment demandé d'analyser un projet et d'identifier les 20 classes les plus à risque en fonction des métriques de conception.Analyser un projet à l'aide de Sourcemonitor

J'ai commencé à analyser le projet et j'ai décidé de choisir les classes ayant la complexité maximale la plus élevée. Dois-je regarder autre chose que la complexité maximale. c'est-à-dire le nombre d'appels, de déclarations, de classes, de méthodes/classes, de profondeur maximale, etc. Suis-je dirigé dans la bonne direction? sinon quoi d'autre devrais-je regarder?

Merci d'avance.

Répondre

5

Je regarderais principalement la complexité maximale, la profondeur maximale et le nombre d'instructions. Ces trois métriques détecteront des méthodes vraiment mal écrites (longues, profondément imbriquées et avec beaucoup de décisions et de dépendances). Triez les rapports SourceMonitor sur chacune de ces trois métriques et écrivez les 20 à 30 premières classes, puis choisissez celles classées dans les trois listes.

+0

Peut-être que cela dépend de la langue du projet, mais en C++, je vois que * Display Method Metrics ... * fournit les meilleurs résultats pour un point de contrôle donné. BTW: Souhaitez-vous suggérer de peser ces trois critères ('wc': poids de la complexité,' wd': poids de la profondeur, 'ws': poids des énoncés), puis trouver' max (wc * C + wd * D + ws * S) 'ou n'est-ce pas pragmatique? – Wolf

+1

@Wolf Je pense que vous compliquez les choses. Cet outil vous donne simplement des mesures sur un certain nombre de critères différents. Il vous suffit de choisir les mesures qui vous semblent le mieux décrire l'état de votre code, puis d'agir sur les pires fichiers sources en fonction de ces mesures. Je ne pense pas qu'il existe une formule exacte pour ce problème. – zendar

1

C'est un bon point de départ, mais je dirais que le risque est également couplé avec la quantité de code qui contient des tests unitaires.

Par exemple, une fonction avec cyc. complexité de 20 qui a 100% de couverture de code de test unitaire est plus sûr qu'une fonction avec cyc. complexité de 10 sans tests unitaires.

+0

La fonction de couverture à 100% est beaucoup plus susceptible d'être «correcte» que celle sans tests; mais sa plus grande complexité signifie qu'il est susceptible de nécessiter plus de travail (effort) pour le modifier ou l'étendre. – Schollii

+0

True, mais le moniteur source ne prend pas en charge la mesure de couverture de test. Peut-être pas le meilleur outil pour résoudre de façon optimale la tâche * 'identifier 20 classes les plus à risque en fonction des métriques de conception» * ... – Wolf

Questions connexes