Frage

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

Ich habe zyklomatische Komplexität für diesen Code zu finden und schlage dann einige weißen Box-Testfälle und Blackbox Testfälle. Aber ich habe Probleme beim Herstellen einer CFG für den Code.

Würde schätzen etwas Hilfe auf Testfälle als auch.

War es hilfreich?

Lösung

Starten Sie durch die Aussagen Nummerierung:

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

Jetzt können Sie deutlich sehen, welche Anweisung ausgeführt ersten und die letzten usw. so zeichnet die cfg einfach wird.

CFG

Nun berechnen zyklomatische Komplexität Sie eine von drei Methoden:

  1. Die Anzahl der Regionen in der Grafik: 4
  2. Nein. von Prädikaten (rot auf graph) + 1: 3 + 1 = 4
  3. Keine Kanten - nein. von Knoten + 2:. 14-12 + 2 = 4

Andere Tipps

Die zyklomatische Komplexität ist 4.

1 für das Verfahren 1 für die for-Schleife +1 für die while-Schleife 1 für den Zustand, wenn der while-Schleife.

Sie können auch McCabe Formel M = E-N + 2C
verwenden     E = Kanten
    N = Knoten
    C = Components |     M = zyklomatische Komplexität

E = 14
N = 12
C = 1

M = 14-12 + 2*1 = 4

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top