Sonar参数分析
API compatibility
1. API behavior changes---Clirr Plugin
正常接口变化数
2. API breaks---Clirr Plugin
可能引发错误的接口变化
3. New API---Clirr Plugin
新增接口数
4. Total API Changes---Clirr Plugin
接口变化总数
注:以上参数需要依赖于Clirr,暂时仍存在问题
Architecture
5. Architecture--- Total Quality Plugin
架构质量 计算方式: ARCH = 100 – TI TI = Tangle Index 架构复杂指标
6. Architecture Tangle Index--- Total Quality Plugin
Complexity
7. Complexity—默认
复杂度
8. Complexity /class—默认
类复杂度
9. Complexity /file—默认
文件复杂度
10. Complexity /method—默认
方法复杂度
11. Complexity Factor--- Quality Index Plugin
复杂度因素 计算方式:
CF = (5 * Complexity>30) * 100 / (Complexity>1 + Complexity>10 + Complexity>20 +
精品文档
Complexity>30)
12. Complexity Factor Methods--- Quality Index Plugin
方法复杂度因素
13. QI Complexity---Quality Index Plugin
复杂度质量指标 计算方式:
(Complexity>30 *10 + Complexity>20 * 5 + Complexity>10 * 3 + Complexity>1) / validLines
Design
14. Design Classes and Methods Complexity--- Total Quality Plugin
NOM = (1 - (class_complexity - 12) / (acel * 12)) * 50 + (1 - (method_complexity - 2.5) / (acel * 2.5)) * 50 参见19
15. Design Coupling Between Objects--- Total Quality Plugin
CBO = (1 - (efferent_coupling - 5) / (acel * 5)) * 100 参见19 DIT = (1 - (depth_of_inheritance_tree - 5) / (acel * 5)) * 100 参见19
16. Design Depth of Inheritance Tree--- Total Quality Plugin 17. Design Lack of Cohesion of Methods--- Total Quality Plugin
LCOM = (1 - (lack_of_cohesion_of_method - 1) / (acel * 1)) * 100 参见19
18. Design Response for Class--- Total Quality Plugin
RFC = (1 - (response_for_class - 50) / (acel * 50)) * 100 参见19
19. Design Quality--- Total Quality Plugin
设计质量 计算方式: DES = 0.15*NOM + 0.15*LCOM + 0.25*RFC 0.25*CBO + 0.20*DIT NOM = (1 - (class_complexity - 12) / (acel * 12)) * 50 + (1 - (method_complexity - 2.5) / (acel * 2.5)) * 50 LCOM = (1 - (lack_of_cohesion_of_method - 1) / (acel * 1)) * 100 RFC = (1 - (response_for_class - 50) / (acel * 50)) * 100 CBO = (1 - (efferent_coupling - 5) / (acel * 5)) * 100 DIT = (1 - (depth_of_inheritance_tree - 5) / (acel * 5)) * 100 Acel参数因子的值可以在Sonar setting页面配置。
每一个度量标准的默认阙值也可以进行配置(例如,50是response_for_class的默认阈值)。
20. LCOM4(Lack of cohesion of methods)
用来说明class内部方法和变量之间的关系, 值越大, 说明内聚性越差. 一般情况下 LCOM4=1是内聚性最佳的. 2说明可以拆成两个类, 以此类推.但是这种测量对门面服务类来说不适用. 有时候很小的类也会根据需要合并在一起, 尽管关联不大
21. Package tangle index
包复杂指数 此参数为包的复杂等级,最好的值为0%,意味着包之间没有圈依赖;最差的值为100%,意味着包与包之间的关系特别的复杂。该指数的计算公式:2 * (package_tangles / package_edges_weight) * 100.
精品文档
22. RFC(Response for Class)
通过检查一个方法被调用的情况来反映一个class的复杂程度. 也可以简单的理解为一个类所包含的方法多寡.
23. Suspect LCOM4 density
LCOM4密度值
Documentation
24. Comment lines
Javadoc、多行注释、单行注释的总数。空注释行、头文件中的注释(主要用于定义许可证)以及commented-out行均不会包括在内。
25. Commented-out LOC
注释掉的代码行数。Javadoc块不会被扫描
26. Comments (%)
注释行数/(注释行数+有效代码行数)
27. Public documented API (%)
添加注释的公有API占总的公有API的百分比
28. Public undocumented API
公有API未添加注释个数
Duplication
29. DRYness –-- Total Quality Plugin
DRYNESS = 100 - Duplicated lines density
30. Duplicated blocks
重复块数
31. Duplicated files
重复文件数
32. Duplicated lines
重复行数
33. Duplicated lines (%)
重复行占总行数的百分比
34. Useless Duplicated Lines---Useless Code Tracker
无用的重复行数;当前的Sonar告诉你有50重复的行数,但是不能告诉你是有两块25行的代码重复(这样你可以节省25行代码)还是有5块10行(这样你可以节省40行代码)的代码重复;通过这个插件,你可以获取到额外的信息。
General
35. Analysability Value--- SIG Maintainability Model
精品文档
可理解性
请查看37指标后的详细介绍
36. Changeability Value--- SIG Maintainability Model
可扩展性
37. Stability Value--- SIG Maintainability Model
稳定性
38. Testability Value--- SIG Maintainability Model
可测试性
可维护性可通过7个质量特性来衡量: 可理解性 可测试性 可修改性 可靠性 可移植性 可使用性
效率
这个插件标示了一个Software Improvement Group(SIG)可维护性模型
这个模型需要两步: 计算基数的指标,然后结合他们计算出更高层面上的数值。 每一个指标被分成5级别排名:从--(很糟糕)到++(非常好) 第一步加上基数的指标。 Volume: 基于代码的行数
Rank LOC -- > 1310000 - > 655000 0 > 246000 + > 66000 ++ > 0 Duplications: 基于代码重复的密度 Rank Duplication -- > 20% - > 10% 0 > 5% + > 3% ++ > 0% Unit tests: 基于单元测试覆盖率
Rank Coverage ++ > 95% + > 80% 0 > 60% 精品文档
- > 20% -- > 0% Complexity:基于方法的圈复杂度
第一步根据圈复杂度的范围确定在方法代码行中的百分比。
Eval High Low Complexity > 20 > 0 Very high > 50 Medium > 10 然后根据分布,我们使用下面的表格来计算等级: Rank Medium H igh Very High ++ < 25% < 0% < 0% + < 30% < 5% < 0% 0 < 40% < 10% < 0% - 否则等级是--
Unit size: 基于方法代码的行数
第一步根据行数的范围确定方法代码行数的百分比。
Eval LOCs < 50% < 15% < 5% Very high > 100 High > 50 Medium > 10 Low > 0 然后根据分布,使用下面的表格来计算等级: Rank Medium H igh Very High ++ < 25% < 0% < 0% + < 30% < 5% < 0% 0 < 40% < 10% < 0% - < 50% < 15% < 5% 否则等级为--
第二步是通过一个简单的平均,将他们结合起来,使用以下映射表来确定最终等级.
analysability changeability stability Volume Complexity Duplications Unit size Unit tests 精品文档