SonarQube中的旧版代码
虽然我不相信将数字放在源代码质量上,SonarQube(以前称为Sonar)在开发过程中可能是一个非常有用的工具。它对您的团队执行一致的风格,已经发现了几个可能的错误,并且是一个很好的工具:您可以浏览违规行为,看看为什么某个表达式或代码块可能是一个问题。
为了确保您的代码库保持一致状态,您还可以直接执行代码检入的任何违规行为。其中一个问题是很多项目不是绿色项目你有很多现有的代码。如果您的违规号码已经很高,很难判断是否引入了新的违规行为。
在这篇文章中,我将向您展示如何从现有代码的零违反行为开始,而不用触摸来源,Jens Schauder在他的伟大演讲中使用Legacy Teams的灵感来启发它。我们将根据文件中的行忽略所有违规行为,因此如果有人触及该违规行为将再次显示的文件,开发人员将负责修复旧版违规行为。
关闭违规插件
我们正在使用SonarQube的关闭违规插件。可以为问题配置不同的排除模式。您可以为代码块定义正则表达式,这些代码块应该被忽略,或者在所有文件或行基础上停用违规。
对于现有代码,您想忽略某些文件和行的所有违规。这可以通过在文本区域中插入这样的方式来完成排除模式:
de.fhopf.a的kka.actor.IndexingActor; PMD:SignatureDeclareThrowsException; [23]
这将排除在IndexingActor类的第23行中抛出原始异常的违规。再次分析代码时,这种违规将被忽略。
通过API检索违规
除了漂亮的仪表板之外,SonarQube还提供了一个可用于检索项目违规的API。如果您不希望查找代码库中的所有现有违规行为,并手动插入,您可以使用它自动生成排除模式。所有这些违规都可以在/ api /违规找到,例如HTTP://本地主机:9000 / API /违例。
我确定还有其他方法可以做,但是我使用jsawk来解析JSON响应(在Ubuntu上,你必须安装Spidermonkey而不是默认的js解释器。你必须自己编译,而且我必须使用一个特定的版本。叹了口气)。





将SonarQube指标集成到TFS构建中 - 简介
2014年7月31日/ ANDYBDEV
我一直在努力将SonarQube整合到我们每周运行的TFS中。如果你不知道SonarQube是否检查出来。它是一个很好的方法来集中有关您的代码的信息,这有助于捕获和跟踪关注KPI的人的指标(如果我们必须让他们至少对他们的代码质量有积极的作用),同时给那些“它是一个中心的地方,可以看到他们可以改进的代码质量等问题。
以前,我们从TFS开发了一个单独的Jenkins构建阅读源,但是我们希望摆脱这个额外的构建,并且只需在TFS中执行一次 - 似乎有点浪费和耗时地整理Jenkins以及TFS。事实证明,我已经有了很好的时机(在写作的时候),代理商sonarqube 插件,近才有声纳可以处理微软测试结果和覆盖文件的上传(分别为.trx和.coverage) - http://docs.codehaus .ORG /显示/ SONAR / C%23 +插件。
方法 - 使用标准的TFS Build工具包
不幸的是,将SonarQube集成到TFS构建中并不是直接的过程。那里已经有可以为您进行扫描和上传方面的定制活动(http://www.vlaquest.com/2013/10/sonar-build-activity-for-tfs-updated/)。我不太喜欢自定义程序集,因为您需要创建一个项目来管理模板,并提供大量引用来删除所有的警告和错误,并且实际上允许您配置导入的活动,从那时起就成为一个需要从项目中编辑你的模板 - 我知道..它没有什么大不了的,中国sonarqube 插件,但我宁愿把它作为一个简单的可编辑工作流程。然后,您需要将程序集提供给构建控制器,我希望避免需要这样做 - 加上我曾经遇到过这样的问题,以便与过去的托管Team Foundation Service一起工作,这在历史的上使我无法避免。
考虑到这些要点,我已经采取了一种方法,这意味着大多数工作可以使用标准活动在构建模板中完成,其余的工作可以在几个可以坐在源中的批处理文件中完成。
我会引导你完成这个过程。
SonarSource
通过上述命令成功分析项目将导致以下输出到控制台或日志文件:
SonarQube Runner 2.3
Java 1.7.0_25 Oracle Corporation(64位)
Mac OS X 10.8.5 x86_64
INFO:Runner配置文件:/opt/sonar-runner-2.3/conf/sonar-runner.properties
信息:项目配置文件:/Users/manisarkar/bn_projects/TimelineJS/sonar-project.properties
INFO:默认语言环境:“en_US”,源代码编码:“UTF-8”
信息:工作目录:/Users/manisarkar/bn_projects/TimelineJS/.sonar
信息:SonarQube服务器3.7
14:11:20.927 INFO - 加载批量设置
。
。
。
14:11:38.290 INFO - ANALYSIS SUCCESSFUL,你可以浏览http:// localhost:9000 / dashboard / index / TimelineJS
14:11:38.292 INFO - 执行工作后类org.sonar.issuesreport.ReportJob
14:11:38.293 INFO - 执行岗位职责类org.sonar.plugins.core.issue.notification.SendIssueNotificatiPo的sdtJob
14:11:38.314 INFO - 执行工作后类org.sonar.plugins.core.batch.IndexProjectPo的stJob
14:11:38.356 INFO - 执行工作后类org.sonar.plugins.dbcleaner.ProjectPurgePo的stJob
14:11:38.365 INFO - - >在2013-08-19和2013-09-15之间每天保留一张快照
14:11:38.365 INFO - - >在2012-09-17和2013-08-19之间每周保留一个快照
14:11:38.365 INFO - - >在2008-09-22和2012-09-17之间每月保留一个快照
14:11:38.365 INFO - - >删除之前的数据:2008-09-22
14:11:38.368 INFO - - > Clean TimelineJS [id = 151]
14:11:38.372信息 - 信息:----------------------------------------- -------------------------------
信息:执行成功
信息:------------------------------------------------ ------------------------
总时间:19.099s
终内存:14M / 502M
信息:------------------------------------------------ ------------------------
以下是几个链接,以示例sonar-project.properties文件来帮助创建新的,即非Maven Java项目的Sonar设置[05]和SonarQube Runner [06]分析。
注意:SonarQube Runner希望SonarQube在指ding端口上运行,否则会抛出错误,例如ERROR:Sonar server http:// localhost:9000无法访问。这当然可以通过配置文件进行更改(参见上一篇文章[01])。
SonarQube组件
一旦构建完成并成功,中国sonarqube 插件,可以在仪表板中找到新的或更新的项目。钻入项目将带来一个屏幕,载入重要指标和分析项目的各个方面:
(以上是示例应用程序的屏幕截图)
令人感兴趣的主要重要组成部分是质量指标,复杂因素,复杂性(左下),测试覆盖率指标(单位测试覆盖率和单位测试成功率)。可能安全违规。 Package Tangle Index and Dependencies to cut,绝dui是方便的,以保持清洁的包和松散耦合的依赖关系。同样的说法,sonarqube 插件,LCOM4(方法中缺少凝聚力 - 降值越好),复杂性也揭示了你的类,方法和功能的松散耦合 - 它也是在文件级别和整体级别给出全图。所有这些组件都是软件质量的良好指标,至少如果不是软件工艺 - 底层代码写在质量上有多好?或者它可以被看作是 - 仍然是充足的改进和重构的房间。
热点视图现在进一步分析了分析的其他一些重要方面,并突出显示需要更多关注的领域或者一个更多的问题在其顶点附近 - 要么超越da允许限制,要么需要更多的抛光才能满足要求。
(以上是在nemo.sonarqube.org网站上发布的JDK7的截图)
我非常喜欢下面的设计组件,它可以很好地分解包装依赖关系并强调依赖循环。它是中大型项目中更复杂的事情之一,通常可能会阻碍模块化。
sonarqube 插件-苏州华克斯公司由苏州华克斯信息科技有限公司提供。“Loadrunner,Fortify,源代码审计,源代码扫描”选择苏州华克斯信息科技有限公司,公司位于:苏州工业园区新平街388号,多年来,华克斯坚持为客户提供好的服务,联系人:华克斯。欢迎广大新老客户来电,来函,亲临指导,洽谈业务。华克斯期待成为您的长期合作伙伴!