JAVA 静态代码分析--圈复杂度检查-javancss
来源:互联网 发布:汨罗淘宝售后打包招聘 编辑:程序博客网 时间:2024/06/07 05:24
简介
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_HOME C:\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 静态代码分析--圈复杂度检查-javancss
- JAVA 静态代码分析--圈复杂度检查-javancss
- java静态代码检查工具:JavaNCSS的使用
- JAVA 静态代码分析--规范检查-checkstyle
- C# 检查代码圈复杂度和warning规则
- Java静态代码检查工具
- 圈复杂度和代码覆盖率
- 关注代码中的圈复杂度
- java sourcemonitor圈复杂度计算
- java eclipse sonar 圈复杂度
- Xcode工具静态检查分析代码
- Xcode工具静态检查分析代码
- 使用Xcode工具静态检查分析代码
- Xcode工具静态检查分析代码
- Java静态代码检查工具笔记
- [转]java静态代码检查工具笔记
- 如何写静态代码检查规则(JAVA)
- 追求代码质量: 监视圈复杂度
- (14)第一个只出现一次的字符
- html文档相对路径分析
- SSH与SSL
- sql存储过程分页
- 双系统 如何在安装linux后将开机默认启动还原为windows
- JAVA 静态代码分析--圈复杂度检查-javancss
- Extjs4中的form使用一
- Android4.4-KitKat源码下载
- Timer定时器使用
- 七redis学习笔记之持久化
- linux 动态链接的创建和使用
- 垃圾回收
- Sicily 1685 Missile
- UINavigationController定义 一定得记住了。千万别忘记了