Sonar参数分析.docx
- 文档编号:30198482
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:26
- 大小:40.61KB
Sonar参数分析.docx
《Sonar参数分析.docx》由会员分享,可在线阅读,更多相关《Sonar参数分析.docx(26页珍藏版)》请在冰豆网上搜索。
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-/(acel*)*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=*NOM+*LCOM+*RFC*CBO+*DIT
NOM=(1-(class_complexity-12)/(acel*12))*50+(1-(method_complexity-/(acel*)*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个质量特性来衡量:
可理解性
可测试性
可修改性
可靠性
可移植性
可使用性
效率
这个插件标示了一个(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-*coding-2*complexity-2*coverage*style
41.SIGMM--SIGMaintainabilityModel
SIG可维护性模型,参考37
42.TechnicalDebt($)---TechnicalDebtPlugin
清除所有技术债务需要的花费
43.TechnicalDebtindays---TechnicalDebtPlugin
需要多少人日去解决技术债务
44.TechnicalDebtratio---TechnicalDebtPlugin
技术债务占整个项目的比例
45.TotalQuality---TotalQualityPlugin
总体质量
计算方式:
TQ=*ARCH+*DES+*CODE+*TS
Management
46.Burnedbudget
燃尽预算
47.Businessvalue
商业价值
48.Teamsize
团队规模
注:
以上变量为手动输入变量,另外这里可以添加一些自定义的变量
Rules
49.Blockerviolations
阻碍性违规
50.CodeQuality---TotalQualityPlugin
代码质量
计算方式:
Code=*DOC+*RULES+*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-*coding-2*complexity-2*coverage*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方法的数量
.){}
...
语句数目不会随着以下情况增加,类、方法、字段、注释定义、包以及import定义。
67.TotalUselessCode--UselessCodeTracker
可以删除的代码行数
Tests
68.Coverage
覆盖率
69.Linecoverage
行覆盖率
70.QITestCoverage---QualityIndexPlugin
测试覆盖率质量指标
71.Skippedunittests
忽略的单元测试数
72.TestingQuality---TotalQualityPlugin
测试质量
计算方式:
Test=*COV+*SUC
COV=Codecoverage
SUC=UnitTestssuccessdensity
73.Uncoveredlines
未覆盖行数
74.Unittesterrors
单元测试出错数
75.Unittestfailures
单元测试失败数
76.Unittestsuccess(%)
单元测试成功率
77.Unittests
单元测试个数
78.Unittestsduration
单元测试需要的时间
SCM
79.Commits
SVN库总的提交数
80.Lastcommit
最近的一次提交时间
SQALE
81.SQALERating
SQALE(SoftwareQualityAssessmentbasedonLifecycleExpectations)评级;
基于生命周期期望的软件质量模型
82.SQALERemediationCost
SQALE整治成本
附录
83.Sonar插件
插件名称
插件介绍
度量参数
ABAP
ABAP项目插件
ArtifactSize
衡量项目产品的大小
Branding
允许添加Logo到Sonar界面上
BuildBreaker
在有一个警报阈值满足时,停止分析处理
C
C项目插件
CRules
C规则插件
Clirr
检查Java库二进制文件及源代码与之前版本的兼容性
Clover
通过(收费)获取覆盖率
Cobol
Cobol项目插件
Crowd
AtlassianCrowd在Sonar上的认证委托
分析报告可通过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
根据编码规范、样式、复杂度、覆盖率计算一个全局的质量指标
Radiator
使用treemap显示度量指标
SCMActivity
从SCM收集和报告信息。
SIGMaintainabilityModel
SIG可维护性模型接口
SecurityRules
检测一组已定义的安全规则
SonarCutoffPlugin
通过日期排除要分析的文件;所有从最后修改时间到配置的截止时间之内的源文件都被排除在外。
当你需要分析在现有代码基础上新增代码或修改时,这可能是有用的。
这种方式对于以前各阶段的分析不会影响分析结果。
SonarPiwikPlugin
Piwik()是一个开源的可替换GoogleAnalytics来使用的网络分析软件,特别是在内部网站。
Piwik插件可以将Sonar上个人浏览活动的记录提交到Piwik服务器。
Sonargraph
通过循环依赖及其他架构方面的指标提供架构改进功能
SQALE
基于生命周期期望的软件质量评估
SpanishPack
西班牙包
SwitchOffViolations
关闭违规检查
Taglist
分析代码中像@TODO或者
取覆盖率
Core
提供覆盖到所有语言的通用组件
DatabaseCleaner
清除旧的或无用的数据,来提高数据库性能
Design
分析Java字节码来计算.度量值并提取资源之间的依赖关系
Duplications
查找项目中重复的源代码
Emailnotifications
Email通知
EnglishPack
英语包
Findbugs
使用Findbugs分析Java代码
Googleanalytics
将GoogleAnalytics跟踪脚本添加到Sonar应用程序
PMD
使用PMD分析Java代码
SquidforJava
Squid分析Java
Surefire
使用Surefire获取单元测试结果
84.Sonar帮助文档中的度量值
度量是Sonar的核心,有效的使用Sonar,需要完全了解每个参数的定义和计算方式。
Name
Key
Description
Physicallines
lines
回车数目
Commentlines
comment_lines
Javadoc、多行注释、单行注释的总数。
空注释行、头文件中的注释(主要用于定义许可证)以及commented-out行均不会包括在内。
/**
?
*Thisisajavadocblock
?
*?
?
<-emptycommentlineconsideredasablankline
?
*/?
<-emptycommentlineconsideredasablankline
/*
?
*Thisisamulti-commentblock
?
*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Sonar 参数 分析