insertion_procedure (int a[], int p [], int N) { int i,j,k; for (i=0; i<=N; i++) p[i] = i; for (i=2; i<=N; i++) { k = p[i]; j = 1; while (a[p[j-1]] > a[k]) {p[j] = p[j-1]; j--} p[j] = k; } } I have to find cyclomatic complexity for this code and then suggest some white box test cases and black box test cases. But I am having trouble making a CFG for the code.Would appreciate some help on test cases as well.
3 Réponses :
La complexité cyclomatique est de 4. p>
1 pour la procédure +1 pour la boucle pour +1 pour la boucle tandis que +1 pour la condition IF de la boucle tandis. P>
Oui, mais ils sont au même niveau de nidification, il y a donc un seul chemin à travers le code, pas d'IFS.
@UN J. totalement d'accord avec toi. Ont ajouté un commentaire similaire juste maintenant dans la réponse originale. Ou bien, si vous connaissez l'explication, vous pouvez l'ajouter ici pour le bénéfice de tous.
2 pour + 1 pendant + 1 procédure = 4. Besoin d'une aide si pouvez-vous confirmer la véracité de ce lien wiki ici. Je pense que la complexité serait 4 ici. Mais cela est mentionné 3. J'ai besoin de quelqu'un pour me témoigner. en.wikipedia.org/wiki/cyclomatic_complexity#/media/... < / a>
Commencez par numéroter les instructions:
insertion_procedure (int a[], int p [], int N) { (1) Int i,j,k; (2) for ((2a)i=0; (2b)i<=N; (2c)i++) (3) p[i] = i; (4) for ((4a)i=2; (4b)i<=N; (4c)i++) { (5) k=p[i];j=1; (6) while (a[p[j-1]] > a[k]) { (7) p[j] = p[j-1]; (8) j-- } (9) p[j] = k; }
Hors de curiosité, quel outil avez-vous utilisé pour générer le graphique de débit?
@James McNellis J'ai utilisé MS Visio pour dessiner la CFG.
Ah; Je pensais que cela aurait pu être créé par une sorte d'outil d'analyse de code. +1 pour prendre l'effort de dessiner une très bonne image!
apprécier totalement l'effort. Merci!
@Vincentramdhanie Belle explication. Cependant, j'ai un doute: N'est-il pas possible que le contrôle de 4b puisse passer directement à la fin de la fonction? (semblable à un saut de 2b à 4a)? Y a-t-il une raison spécifique la même chose n'est pas prise en compte? Qu'est-ce que j'oublie ici?
En fait @jay, vous avez peut-être raison. 4b est un prédicat et en tant que tel devrait avoir 2 flèches quittant. Étrange comment personne ne s'est rusé auparavant.
OK j'ai compris. Cela ira de 4b à 10 mais pas de 9 à 10. Les régions totales resteront donc les mêmes.
Vous pouvez également utiliser McCabe Formula M = E-N + 2C Code>
E = bords
N = nœuds
C = composants
M = complexité cyclomatique
m = 14-12 + 2 * 1 = 4 code> p> p> p> p> P>
Quelle langue est-ce? Cela ressemble à c sauf pour le "INT" plutôt que "INT" dans la déclaration. Si c'est C, il n'y a pas d'imbriquée pour la boucle, mais Nothr a une boucle tandis que la boucle imbriquée dans une boucle.
Oh oui, il n'y a pas de boucle imbriquée. C'est c