Sonar参数分析APIcompatibility1.APIbehaviorchanges---ClirrPlugin正常接口变化数2.APIbreaks---ClirrPlugin可能引发错误的接口变化3.NewAPI---ClirrPlugin新增接口数4.TotalAPIChanges---ClirrPlugin接口变化总数注:以上参数需要依赖于Clirr,暂时仍存在问题Architecture5.Architecture---TotalQualityPlugin架构质量计算方式:ARCH=100–TITI=TangleIndex6.ArchitectureTangleIndex---TotalQualityPlugin架构复杂指标Complexity7.Complexity—默认复杂度8.Complexity/class—默认类复杂度9.Complexity/file—默认文件复杂度10.Complexity/method—默认方法复杂度11.ComplexityFactor---QualityIndexPlugin复杂度因素计算方式:CF=(5*Complexity30)*100/(Complexity1+Complexity10+Complexity20+Complexity30)12.ComplexityFactorMethods---QualityIndexPlugin方法复杂度因素13.QIComplexity---QualityIndexPlugin复杂度质量指标计算方式:(Complexity30*10+Complexity20*5+Complexity10*3+Complexity1)/validLinesDesign14.DesignClassesandMethodsComplexity---TotalQualityPluginNOM=(1-(class_complexity-12)/(acel*12))*50+(1-(method_complexity-2.5)/(acel*2.5))*50参见1915.DesignCouplingBetweenObjects---TotalQualityPluginCBO=(1-(efferent_coupling-5)/(acel*5))*100参见1916.DesignDepthofInheritanceTree---TotalQualityPluginDIT=(1-(depth_of_inheritance_tree-5)/(acel*5))*100参见1917.DesignLackofCohesionofMethods---TotalQualityPluginLCOM=(1-(lack_of_cohesion_of_method-1)/(acel*1))*100参见1918.DesignResponseforClass---TotalQualityPluginRFC=(1-(response_for_class-50)/(acel*50))*100参见1919.DesignQuality---TotalQualityPlugin设计质量计算方式:DES=0.15*NOM+0.15*LCOM+0.25*RFC0.25*CBO+0.20*DITNOM=(1-(class_complexity-12)/(acel*12))*50+(1-(method_complexity-2.5)/(acel*2.5))*50LCOM=(1-(lack_of_cohesion_of_method-1)/(acel*1))*100RFC=(1-(response_for_class-50)/(acel*50))*100CBO=(1-(efferent_coupling-5)/(acel*5))*100DIT=(1-(depth_of_inheritance_tree-5)/(acel*5))*100Acel参数因子的值可以在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.SuspectLCOM4densityLCOM4密度值Documentation24.CommentlinesJavadoc、多行注释、单行注释的总数。空注释行、头文件中的注释(主要用于定义许可证)以及commented-out行均不会包括在内。25.Commented-outLOC注释掉的代码行数。Javadoc块不会被扫描26.Comments(%)注释行数/(注释行数+有效代码行数)27.PublicdocumentedAPI(%)添加注释的公有API占总的公有API的百分比28.PublicundocumentedAPI公有API未添加注释个数Duplication29.DRYness–--TotalQualityPluginDRYNESS=100-Duplicatedlinesdensity30.Duplicatedblocks重复块数31.Duplicatedfiles重复文件数32.Duplicatedlines重复行数33.Duplicatedlines(%)重复行占总行数的百分比34.UselessDuplicatedLines---UselessCodeTracker无用的重复行数;当前的Sonar告诉你有50重复的行数,但是不能告诉你是有两块25行的代码重复(这样你可以节省25行代码)还是有5块10行(这样你可以节省40行代码)的代码重复;通过这个插件,你可以获取到额外的信息。General35.AnalysabilityValue---SIGMaintainabilityModel可理解性请查看37指标后的详细介绍36.ChangeabilityValue---SIGMaintainabilityModel可扩展性37.StabilityValue---SIGMaintainabilityModel稳定性38.TestabilityValue---SIGMaintainabilityModel可测试性可维护性可通过7个质量特性来衡量:可理解性可测试性可修改性可靠性可移植性可使用性效率这个插件标示了一个SoftwareImprovementGroup(SIG)可维护性模型这个模型需要两步:计算基数的指标,然后结合他们计算出更高层面上的数值。每一个指标被分成5级别排名:从--(很糟糕)到++(非常好)第一步加上基数的指标。Volume:基于代码的行数RankLOC--1310000-6550000246000+66000++0Duplications:基于代码重复的密度RankDuplication--20%-10%05%+3%++0%Unittests:基于单元测试覆盖率RankCoverage++95%+80%060%-20%--0%Complexity:基于方法的圈复杂度第一步根据圈复杂度的范围确定在方法代码行中的百分比。EvalComplexityVeryhigh50High20Medium10Low0然后根据分布,我们使用下面的表格来计算等级:RankMediumHighVeryHigh++25%0%0%+30%5%0%040%10%0%-50%15%5%否则等级是--Unitsize:基于方法代码的行数第一步根据行数的范围确定方法代码行数的百分比。EvalLOCsVeryhigh100High50Medium10Low0然后根据分布,使用下面的表格来计算等级:RankMediumHighVeryHigh++25%0%0%+30%5%0%040%10%0%-50%15%5%否则等级为--第二步是通过一个简单的平均,将他们结合起来,使用以下映射表来确定最终等级.VolumeComplexityDuplicationsUnitsizeUnittestsanalysabilitychangeabilitystabilitytestability因此4个代表软件可维护性四维的先进指标。可选项,通过将4个指标简单的结合在一块,可以得到可维护性排名。需要注意的是,图表的颜色代表实际结合后的值,从红色=--到绿色=++.39.Profileversion未知未知40.QualityIndex---QualityIndexPlugin计算方式:QI=10-4.5*coding-2*complexity-2*coverage-1.5*style41.SIGMM--SIGMaintainabilityModelSIG可维护性模型,参考3742.TechnicalDebt($)---TechnicalDebtPlugin清除所有技术债务需要的花费43.TechnicalDebtindays---TechnicalDebtPlugin需要多少人日去解决技术债务44.TechnicalDebtratio---TechnicalDebtPlugin技术债务占整个项目的比例45.TotalQuality---TotalQualityPlugin总体质量计算方式:TQ=0.25*ARCH+0.25*DES+0.25*CODE+0.25*TSManagement46.Burnedbudget燃尽预算47.Businessvalue商业价值48.Teamsize团队规模注:以上变量为手动输入变量,另外这里可以添加一些自定义的变量Rules49.Blockerviolations阻碍性违规50.CodeQuality---TotalQualityPlugin代码质量计算方式:Code=0.15*DOC+0.45*RULES+0.40*DRYNESSDOC=DocumentedAPIdensityRULES=RulescomplianceindexDRYNESS=100-Duplicatedlinesdensity51.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)/validLines58.QICodingWeightedViolations---QualityIndexPlugin代码违规权重指标59.QISt