View Javadoc
1   /*
2   CyclomaticComplexity
3   max = 0
4   switchBlockAsSingleDecisionPoint = (default)false
5   tokens = (default)LITERAL_WHILE, LITERAL_DO, LITERAL_FOR, LITERAL_IF, LITERAL_SWITCH, \
6            LITERAL_CASE, LITERAL_CATCH, QUESTION, LAND, LOR
7   
8   
9   */
10  
11  package com.puppycrawl.tools.checkstyle.checks.metrics.cyclomaticcomplexity;
12  
13  public class InputCyclomaticComplexity {
14      // NP = 2
15      public void foo() { // violation
16          //NP(while-statement) = (while-range=1) + (expr=0) + 1 = 2
17          while (true) {
18              Runnable runnable = new Runnable() {
19                 // NP = 2
20                  public void run() { // violation
21                      // NP(while-statement) = (while-range=1) + (expr=0) + 1 = 2
22                      while (true) {
23                      }
24                  }
25              };
26  
27              new Thread(runnable).start();
28          }
29      }
30  
31      // NP = 10
32      public void bar() { // violation
33          // NP = (if-range=3*3) + (expr=0) + 1 = 10
34          if (System.currentTimeMillis() == 0) {
35              //NP = (if-range=1) + 1 + (expr=1) = 3
36              if (System.currentTimeMillis() == 0 && System.currentTimeMillis() == 0) {
37              }
38              //NP = (if-range=1) + 1 + (expr=1) = 3
39              if (System.currentTimeMillis() == 0 || System.currentTimeMillis() == 0) {
40              }
41          }
42      }
43  
44      // NP = 3
45      public void simpleElseIf() { // violation
46          // NP = (if-range=1) + (else-range=2) + 0 = 3
47          if (System.currentTimeMillis() == 0) {
48          // NP(else-range) = (if-range=1) + (else-range=1) + (expr=0) = 2
49          } else if (System.currentTimeMillis() == 0) {
50          } else {
51          }
52      }
53  
54      // NP = 7
55      public void stupidElseIf() { // violation
56          // NP = (if-range=1) + (else-range=3*2) + (expr=0) = 7
57          if (System.currentTimeMillis() == 0) {
58          } else {
59              // NP = (if-range=1) + (else-range=2) + (expr=0) = 3
60              if (System.currentTimeMillis() == 0) {
61              } else {
62                  // NP = (if-range=1) + 1 + (expr=0) = 2
63                  if (System.currentTimeMillis() == 0) {
64                  }
65              }
66              // NP = (if-range=1) + 1 + (expr=0) = 2
67              if (System.currentTimeMillis() == 0) {
68              }
69          }
70      }
71  
72      // NP = 3
73      public InputCyclomaticComplexity() // violation
74      {
75          int i = 1;
76          // NP = (if-range=1) + (else-range=2) + 0 = 3
77          if (System.currentTimeMillis() == 0) {
78          // NP(else-range) = (if-range=1) + (else-range=1) + (expr=0) = 2
79          } else if (System.currentTimeMillis() == 0) {
80          } else {
81          }
82      }
83  
84      // STATIC_INIT
85      // NP = 3
86      static { // violation
87          int i = 1;
88          // NP = (if-range=1) + (else-range=2) + 0 = 3
89          if (System.currentTimeMillis() == 0) {
90          // NP(else-range) = (if-range=1) + (else-range=1) + (expr=0) = 2
91          } else if (System.currentTimeMillis() == 0) {
92          } else {
93          }
94      }
95  
96      // INSTANCE_INIT
97      // NP = 3
98      { // violation
99          int i = 1;
100         // NP = (if-range=1) + (else-range=2) + 0 = 3
101         if (System.currentTimeMillis() == 0) {
102         // NP(else-range) = (if-range=1) + (else-range=1) + (expr=0) = 2
103         } else if (System.currentTimeMillis() == 0) {
104         } else {
105         }
106     }
107 
108     /** Inner */
109     // NP = 0
110     public InputCyclomaticComplexity(int aParam) // violation
111     {
112         Runnable runnable = new Runnable() {
113             // NP = 2
114             public void run() { // violation
115                 // NP(while-statement) = (while-range=1) + (expr=0) + 1 = 2
116                 while (true) {
117                 }
118             }
119         };
120         new Thread(runnable).start();
121     }
122 }