[置顶] JAVA 静态代码分析--圈复杂度检查-javancss
2013-11-22 11:29
696 查看
简介
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(NonCommenting 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了。
相关文章推荐
- CSS 居中大全(转)
- js 改变css样式值
- 本博客样式CSS,在BlackLowKey模板基础上修改
- CSS样式优先级
- 《C#高级编程(第8版)》之用C# 2012和.NET 4.5编写Windows 8样式应用程序技巧
- Umbraco TextBoxFor 如何加样式和属性
- CSS3实现自定义Checkbox和Radiobox
- 【转】OpenCV编码样式指南
- css_day7---块元素和行内元素
- CSS3 3D Transform
- css的效率和浏览器渲染的速度
- 浏览器加载和渲染html的顺序-css渲染效率的探究(转载)
- 牢记 31 种 CSS 选择器用法
- 用css3实现鼠标移进去当前亮其他变灰
- css 实现弹框
- css 内容垂直居中
- CSS学习之一
- css 滤镜详解
- css3中position定位详解
- 前端(html,css,js)各种摘抄整理(持续更新ing)