使用Source Monitor检测Java代码的环复杂度

Today I found a useful free software called “SourceMonitor” which can help to calculate and monitor the java code ( and other programming language like C++, C# etc ) complexity.


使用Source Monitor检测Java代码的环复杂度For the definition and how to calculate cyclomatic complexity itself, please refer to detail in wikipedia.


In order to demonstrate the usage of this software, I use a very simple java class below for example:


package test;
import java.util.ArrayList;
public class monthTool {
 static ArrayList<String> monthCollection = new ArrayList<String>();
 public static void main(String[] args) {
  monthTool tool = new monthTool();
  tool.printV1(1);
  tool.printV2(2);
  tool.printV1(0);
  tool.printV2(-1);
  tool.printV3(3);
  tool.printV3(13);
 }
 public monthTool(){
  monthCollection.add("Invalid");
  monthCollection.add("January");
  monthCollection.add("Febrary");
  monthCollection.add("March");
  monthCollection.add("April");
  monthCollection.add("May");
  monthCollection.add("June");
  monthCollection.add("July");
  monthCollection.add("August");
  monthCollection.add("September");
  monthCollection.add("October");
  monthCollection.add("November");
  monthCollection.add("December");
 }
 public void printV1(int month){
  System.out.println("Month is: " + getMonthNameV1(month));
 }
 public void printV2(int month){
  if( month >= 1 && month <= 12)
   System.out.println("Month is: " + getMonthNameV2(month));
  else
   System.out.println("Please specify a valid month");
 }
 public void printV3(int month) {
  System.out.println("Month is: " + getMonthNameV3(month));
 }
 public String getMonthNameV2(int month){
  if( month == 1)
   return "January";
  else if( month == 2)
   return "Febrary";
  else if( month == 3)
   return "March";
  else if( month == 4)
   return "April";
  else if( month == 5)
   return "May";
  else if( month == 6)
   return "June";
  else if( month == 7)
   return "July";
  else if( month == 8)
   return "August";
  else if( month == 9)
   return "September";
  else if( month == 10)
   return "October";
  else if( month == 11)
   return "November";
  else if( month == 12)
   return "December";
  else
   return "Invalid";
 }
 public String getMonthNameV1(int month){
  switch (month){
  case 1:
   return "January";
  case 2:
   return "Febrary";
  case 3:
   return "March";
  case 4:
   return "April";
  case 5:
   return "May";
  case 6:
   return "June";
  case 7:
   return "July";
  case 8:
   return "August";
  case 9:
   return "September";
  case 10:
   return "October";
  case 11:
   return "November";
  case 12:
   return "December";
  default:
   return "Invalid";
  }
 }
 public String getMonthNameV3(int month){
  try {
   return monthCollection.get(month);
  }
  catch (java.lang.IndexOutOfBoundsException e){
   return "Invalid";
  }
 }
}

使用Source Monitor检测Java代码的环复杂度使用Source Monitor检测Java代码的环复杂度使用Source Monitor检测Java代码的环复杂度使用Source Monitor检测Java代码的环复杂度使用Source Monitor检测Java代码的环复杂度使用Source Monitor检测Java代码的环复杂度

上一篇:C# 获取与解析枚举类型的 DescriptionAttribute


下一篇:使用QueryRunner报错:java.sql.SQLException: Cannot create