JAVA 静态代码分析

简介

javancss是用于圈复杂度检查的,例如一个方法里有很多很多的for if else,则圈复杂度就会很多,也就是说这个方法的分支太多了,最大问题就是导致代码非常丑陋,有可能情况也会导致效率问题。

安装

下载:http://download.csdn.net/detail/magic_wz/6591913

官网:http://www.kclee.de/clemens/java/javancss/

以windows为例,解压缩到c盘下即可。

运行JAVA基本的设置还是要设置的,如PATH的设置,这里就不在多说了我这里运行的时候一直报错 系统找不到指定路径,后来查明,原来是我没有设置JAVA_HOME这个也是必须的,计算机–》属性–》高级系统设置–》环境变量,设置JAVA_HOMEC:\jdk1.7.0_21还要设置CLASSPATH C:\javancss-32.53\lib运行:

C:\javancss-32.53\bin>javancss -gui  C:\Users\git\web\code\nksweb\src\

运行即可如果运行不起来,还有可能是JAVA PATH中有空格,注意一下运行效果:解释NCSS(Non Commenting Source Statements)类似于java的有效代码行。CCN(Cyclomatic Complexity Number),用于评价类方法的圈复杂度。如何降低CCN圈复杂度例如我的某个方法中有很多IF用来判断

if (this.PostgreSQL != null && !PostgreSQL.equals("")) {nkseServiceItemList.add(new NkseServiceItem(PostgreSQL,PostgreSQL_Paras, this.hasGraph(PostgreSQL)));}if (this.Oracle != null && !Oracle.equals("")) {nkseServiceItemList.add(new NkseServiceItem(Oracle, Oracle_Paras,this.hasGraph(Oracle)));}if (this.Informix != null && !Informix.equals("")) {nkseServiceItemList.add(new NkseServiceItem(Informix,Informix_Paras, this.hasGraph(Informix)));}...

大概就是如此,一共就几十个,最好查出来这个方法的CCN是四五十,代码虽然看起来没什么问题,但是确实是不太好看,看上去全是IF。于是我思考用MAP来解决问题

HashMap<String, String> map = new HashMap<String, String>();map.put(this.MySQL, this.MySQL_Paras);map.put(this.PostgreSQL, this.PostgreSQL_Paras);map.put(this.Oracle, this.Oracle_Paras);...

先把所有要验证的都装进MAP中,然后循环一次验证并做处理

for(String key : map.keySet()){    if(key != null && !key.equals("")){        nkseServiceItemList.add(new NkseServiceItem(key, map.get(key),                    this.hasGraph(key)));    }}

这样,复杂度就从原来的50变成了5了。人生就是一次充满未知的旅行,在乎的是沿途的风景,

JAVA 静态代码分析

相关文章:

你感兴趣的文章:

标签云: