Sonar全参数分析报告.docx
《Sonar全参数分析报告.docx》由会员分享,可在线阅读,更多相关《Sonar全参数分析报告.docx(32页珍藏版)》请在冰豆网上搜索。
Sonar全参数分析报告
Sonar参数分析
APIcompatibility
1.APIbehaviorchanges---ClirrPlugin
正常接口变化数
2.APIbreaks---ClirrPlugin
可能引发错误的接口变化
3.NewAPI---ClirrPlugin
新增接口数
4.TotalAPIChanges---ClirrPlugin
接口变化总数
注:
以上参数需要依赖于Clirr,暂时仍存在问题
Architecture
5.Architecture---TotalQualityPlugin
架构质量
计算方式:
ARCH=100–TI
TI=TangleIndex
6.ArchitectureTangleIndex---TotalQualityPlugin
架构复杂指标
Complexity
7.Complexity—默认
复杂度
8.Complexity/class—默认
类复杂度
9.Complexity/file—默认
文件复杂度
10.Complexity/method—默认
方法复杂度
11.ComplexityFactor---QualityIndexPlugin
复杂度因素
计算方式:
CF=(5*Complexity>30)*100/(Complexity>1+Complexity>10+Complexity>20+Complexity>30)
12.ComplexityFactorMethods---QualityIndexPlugin
方法复杂度因素
13.QIComplexity---QualityIndexPlugin
复杂度质量指标
计算方式:
(Complexity>30*10+Complexity>20*5+Complexity>10*3+Complexity>1)/validLines
Design
14.DesignClassesandMethodsComplexity---TotalQualityPlugin
NOM=(1-(class_complexity-12)/(acel*12))*50+(1-(method_complexity-2.5)/(acel*2.5))*50参见19
15.DesignCouplingBetweenObjects---TotalQualityPlugin
CBO=(1-(efferent_coupling-5)/(acel*5))*100参见19
16.DesignDepthofInheritanceTree---TotalQualityPlugin
DIT=(1-(depth_of_inheritance_tree-5)/(acel*5))*100参见19
17.DesignLackofCohesionofMethods---TotalQualityPlugin
LCOM=(1-(lack_of_cohesion_of_method-1)/(acel*1))*100参见19
18.DesignResponseforClass---TotalQualityPlugin
RFC=(1-(response_for_class-50)/(acel*50))*100参见19
19.DesignQuality---TotalQualityPlugin
设计质量
计算方式:
DES=0.15*NOM+0.15*LCOM+0.25*RFC0.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参数因子的值可以在Sonarsetting页面配置。
每一个度量标准的默认阙值也可以进行配置(例如,50是response_for_class的默认阈值)。
20.LCOM4(Lackofcohesionofmethods)
用来说明class内部方法和变量之间的关系,值越大,说明内聚性越差.一般情况下LCOM4=1是内聚性最佳的.2说明可以拆成两个类,以此类推.但是这种测量对门面服务类来说不适用.有时候很小的类也会根据需要合并在一起,尽管关联不大
21.Packagetangleindex
包复杂指数
此参数为包的复杂等级,最好的值为0%,意味着包之间没有圈依赖;最差的值为100%,意味着包与包之间的关系特别的复杂。
该指数的计算公式:
2*(package_tangles/package_edges_weight)*100.
22.RFC(ResponseforClass)
通过检查一个方法被调用的情况来反映一个class的复杂程度.也可以简单的理解为一个类所包含的方法多寡.
23.SuspectLCOM4density
LCOM4密度值
Documentation
24.Commentlines
Javadoc、多行注释、单行注释的总数。
空注释行、头文件中的注释(主要用于定义许可证)以及commented-out行均不会包括在内。
25.Commented-outLOC
注释掉的代码行数。
Javadoc块不会被扫描
26.Comments(%)
注释行数/(注释行数+有效代码行数)
27.PublicdocumentedAPI(%)
添加注释的公有API占总的公有API的百分比
28.PublicundocumentedAPI
公有API未添加注释个数
Duplication
29.DRYness–--TotalQualityPlugin
DRYNESS=100-Duplicatedlinesdensity
30.Duplicatedblocks
重复块数
31.Duplicatedfiles
重复文件数
32.Duplicatedlines
重复行数
33.Duplicatedlines(%)
重复行占总行数的百分比
34.UselessDuplicatedLines---UselessCodeTracker
无用的重复行数;当前的Sonar告诉你有50重复的行数,但是不能告诉你是有两块25行的代码重复(这样你可以节省25行代码)还是有5块10行(这样你可以节省40行代码)的代码重复;通过这个插件,你可以获取到额外的信息。
General
35.AnalysabilityValue---SIGMaintainabilityModel
可理解性
请查看37指标后的详细介绍
36.ChangeabilityValue---SIGMaintainabilityModel
可扩展性
37.StabilityValue---SIGMaintainabilityModel
稳定性
38.TestabilityValue---SIGMaintainabilityModel
可测试性
可维护性可通过7个质量特性来衡量:
可理解性
可测试性
可修改性
可靠性
可移植性
可使用性
效率
这个插件标示了一个SoftwareImprovementGroup(SIG)可维护性模型
这个模型需要两步:
计算基数的指标,然后结合他们计算出更高层面上的数值。
每一个指标被分成5级别排名:
从--(很糟糕)到++(非常好)
第一步加上基数的指标。
Volume:
基于代码的行数
Rank
LOC
--
>1310000
-
>655000
0
>246000
+
>66000
++
>0
Duplications:
基于代码重复的密度
Rank
Duplication
--
>20%
-
>10%
0
>5%
+
>3%
++
>0%
Unittests:
基于单元测试覆盖率
Rank
Coverage
++
>95%
+
>80%
0
>60%
-
>20%
--
>0%
Complexity:
基于方法的圈复杂度
第一步根据圈复杂度的范围确定在方法代码行中的百分比。
Eval
Complexity
Veryhigh
>50
High
>20
Medium
>10
Low
>0
然后根据分布,我们使用下面的表格来计算等级:
Rank
Medium
High
VeryHigh
++
<25%
<0%
<0%
+
<30%
<5%
<0%
0
<40%
<10%
<0%
-
<50%
<15%
<5%
否则等级是--
Unitsize:
基于方法代码的行数
第一步根据行数的范围确定方法代码行数的百分比。
Eval
LOCs
Veryhigh
>100
High
>50
Medium
>10
Low
>0
然后根据分布,使用下面的表格来计算等级:
Rank
Medium
High
VeryHigh
++
<25%
<0%
<0%
+
<30%
<5%
<0%
0
<40%
<10%
<0%
-
<50%
<15%
<5%
否则等级为--
第二步是通过一个简单的平均,将他们结合起来,使用以下映射表来确定最终等级.
Volume
Complexity
Duplications
Unitsize
Unittests
analysability
changeability
stability
testability
因此4个代表软件可维护性四维的先进指标。
可选项,通过将4个指标简单的结合在一块,可以得到可维护性排名。
需要注意的是,图表的颜色代表实际结合后的值,从红色=--到绿色=++.
39.Profileversion未知
未知
40.QualityIndex---QualityIndexPlugin
计算方式:
QI=10-4.5*coding-2*complexity-2*coverage-1.5*style
41.SIGMM--SIGMaintainabilityModel
SIG可维护性模型,参考37
42.TechnicalDebt($)---TechnicalDebtPlugin
清除所有技术债务需要的花费
43.TechnicalDebtindays---TechnicalDebtPlugin
需要多少人日去解决技术债务
44.TechnicalDebtratio---TechnicalDebtPlugin
技术债务占整个项目的比例
45.TotalQuality---TotalQualityPlugin
总体质量
计算方式:
TQ=0.25*ARCH+0.25*DES+0.25*CODE+0.25*TS
Management
46.Burnedbudget
燃尽预算
47.Businessvalue
商业价值
48.Teamsize
团队规模
注:
以上变量为手动输入变量,另外这里可以添加一些自定义的变量
Rules
49.Blockerviolations
阻碍性违规
50.CodeQuality---TotalQualityPlugin
代码质量
计算方式:
Code=0.15*DOC+0.45*RULES+0.40*DRYNESS
DOC=DocumentedAPIdensity
RULES=Rulescomplianceindex
DRYNESS=100-Duplicatedlinesdensity
51.Criticalviolations
严重违规
52.DeadCode---UselessCodeTracker
无作用程序代码
53.Infoviolations
建议级别违规
54.Majorviolations
重要违规
55.Minorviolations
次要违规
56.PotentialDeadCode---UselessCodeTracker
当前代码中未使用的protected方法数目;此参数可通过PMD:
UnusedProtectedMethod或者SQUID:
UnusedProtectedMethod获取到。
计算他们行数的和值。
57.QICodingViolations---QualityIndexPlugin
代码违规质量指标(PMD规则指数)
计算方式:
(Blocker*10+Critical*5+Major*3+Minor+Info)/validLines
58.QICodingWeightedViolations---QualityIndexPlugin
代码违规权重指标
59.QIStyleViolations---QualityIndexPlugin
风格违规质量指标(CheckStyle规则指数)
计算方式:
Style=(Errors*10+Warnings)/ValidLines*10
QI=10-4.5*coding-2*complexity-2*coverage-1.5*style
60.QIStyleWeightedViolations---QualityIndexPlugin
风格违规权重质量指标
61.Rulescompliance
遵守规则率
62.Securityrulescompliance---SecurityRulesPlugin
Security规则遵守率
63.Securityviolations---SecurityRulesPlugin
符合Security规则数目
64.Violations
违规总数
65.WeightedSecurityViolations---SecurityRulesPlugin
Security规则权重值(总数)
Size
66.Accessors
Getter及setter方法的数量
//Getters
publicStringgetName(){
returnthis.name;
}
publicbooleanisParent(){
returnthis.isParent;
}
//Setters
publicvoidsetName(Stringname){
this.name=name;
}
publicvoidsetIsParent(booleanisParent){
this.isParent=isParent;
}
67.ArtifactSize(Kb)---ArtifactSizePlugin
记录最终产品大小
68.Classes
类总数
69.Files
文件数
70.Lines
文件中行数
71.Linesofcode
代码行数
72.Methods
方法数目
73.Packages
包数目
74.PublicAPI
公共类、公共方法(不包括访问器)以及公共属性(不包括publicfinalstatic类型的)的数目。
75.Statements
Java语言规范中没有块定义的语句数目;此数目在遇到含有if,else,while,do,for,switch,break,continue,return,throw,synchronized,catch,finally等关键字的语句时增加。
例如:
//
i=0;
if(ok)
if(exit){
if(3==4);
if(4==4){;}
}else{
try{}
while(true){}
for(...){}
...
语句数目不会随着以下情况增加,类、方法、字段、注释定义、包以及import定义。
76.TotalUselessCode--UselessCodeTracker
可以删除的代码行数
Tests
77.Coverage
覆盖率
78.Linecoverage
行覆盖率
79.QITestCoverage---QualityIndexPlugin
测试覆盖率质量指标
80.Skippedunittests
忽略的单元测试数
81.TestingQuality---TotalQualityPlugin
测试质量
计算方式:
Test=0.80*COV+0.20*SUC
COV=Codecoverage
SUC=UnitTestssuccessdensity
82.Uncoveredlines
未覆盖行数
83.Unittesterrors
单元测试出错数
84.Unittestfailures
单元测试失败数
85.Unittestsuccess(%)
单元测试成功率
86.Unittests
单元测试个数
87.Unittestsduration
单元测试需要的时间
SCM
88.Commits
SVN库总的提交数
89.Lastcommit
最近的一次提交时间
SQALE
90.SQALERating
SQALE(SoftwareQualityAssessmentbasedonLifecycleExpectations)评级;
基于生命周期期望的软件质量模型
91.SQALERemediationCost
SQALE整治成本
附录
92.Sonar插件
插件名称
插件介绍
度量参数
ABAP
ABAP项目插件
ArtifactSize
衡量项目产品的大小
ArtifactSize(Kb)
Branding
允许添加Logo到Sonar界面上
BuildBreaker
在有一个警报阈值满足时,停止分析处理
C
C项目插件
CRules
C规则插件
Clirr
检查Java库二进制文件及源代码与之前版本的兼容性
APIbehaviorchanges
APIbreaks
NewAPI
TotalAPIChanges
Clover
通过AtlassianClover(收费)获取覆盖率
Cobol
Cobol项目插件
Crowd
AtlassianCrowd在Sonar上的认证委托
Email
分析报告可通过Email进行传输
Emma
Emma是替代Clover和Cobertura测量单元测试代码覆盖率的工具
Flex
ActionScript项目插件
FrenchPack
法语包
GoogleCalendar
将Google日历集成到Sonar
GreenPepper
收集GreenPepperMavenplugin提供的测试报告到Sonar上
Groovy
Groovy项目插件
JMeter
在Sonar上展示JMeter测试结果
JaCoCo
JaCoCo是替代Clover和Cobertura测量单元测试代码覆盖率的工具
JavaScript
JavaScript项目插件
Jira
从Jira服务中收集项目缺陷的数目
LDAP
LDAP在Sonar上的认证委托
Mantis
从MantisBugTracker中检索项目缺陷的个数
MotionChart
显示一组指标随着时间的演变(需要接入互联网)
Natural
Natural项目插件
PAM
允许Sonar在*nixbox上使用PAM认证
PDFReport
PDF报告插件
PHP
PHP项目插件
PL/SQL
PL/SQL项目插件
QualityIndex
根据编码规范、样式、复杂度、覆盖率计算一个全局的质量指标
QITestCoverage
QIStyleWeightedViolations
QIStyleViolations
QICodingWeightedViolations
QICodingViolations
ComplexityFactor
ComplexityFactorMethods
QIComplexity
QualityIndex
Radiator
使用treemap显示度量指标
SCMActivity
从SCM收集和报告信息。
Commits
Lastcommit
SIGMaintainabilityModel
SIG可维护性模型接口
SIGMM
TestabilityValue
StabilityValue
ChangeabilityValue
AnalysabilityValue
SecurityRules
检测一组已定义的安全规则
WeightedSecurityViolations
Securityviolations
Secur