将SonarQube指标集成到TFS构建中 - 简介
2014年7月31日/ ANDYBDEV
我一直在努力将SonarQube整合到我们每周运行的TFS中。如果你不知道SonarQube是否检查出来。它是一个很好的方法来集中有关您的代码的信息,这有助于捕获和跟踪关注KPI的人的指标(如果我们必须让他们至少对他们的代码质量有积极的作用),同时给那些“它是一个中心的地方,可以看到他们可以改进的代码质量等问题。
以前,我们从TFS开发了一个单独的Jenkins构建阅读源,但是我们希望摆脱这个额外的构建,并且只需在TFS中执行一次 - 似乎有点浪费和耗时地整理Jenkins以及TFS。事实证明,我已经有了很好的时机(在写作的时候),近才有声纳可以处理微软测试结果和覆盖文件的上传(分别为.trx和.coverage) - http://dehaus .ORG /显示/ SONAR / C%23 +插件。
方法 - 使用标准的TFS Build工具包
不幸的是,将SonarQube集成到TFS构建中并不是直接的过程。那里已经有可以为您进行扫描和上传方面的定制活动(http:///2013/10/sonar-build-activity-for-tfs-updated/)。我不太喜欢自定义程序集,中国sonarqube 中文,因为您需要创建一个项目来管理模板,并提供大量引用来删除所有的警告和错误,并且实际上允许您配置导入的活动,从那时起就成为一个需要从项目中编辑你的模板 - 我知道..它没有什么大不了的,但我宁愿把它作为一个简单的可编辑工作流程。然后,您需要将程序集提供给构建控制器,我希望避免需要这样做 - 加上我曾经遇到过这样的问题,以便与过去的托管Team Foundation Service一起工作,这在历史的上使我无法避免。
考虑到这些要点,我已经采取了一种方法,这意味着大多数工作可以使用标准活动在构建模板中完成,其余的工作可以在几个可以坐在源中的批处理文件中完成。
我会引导你完成这个过程。
SonarLint –为 c#、VB.NET、Java、JavaScript、PHP 和 Python 提供一个免费的静态分析工具5月3日, 2017Code 质量, 评论, Toolingsonar 皮棉, 视觉工作室这是一个. NET 的重点帖子。
很高兴看到人们正在构建的东西, 现在 c# 编译器是开源的。我们实际上是在工具中游泳, 这不是一件坏事,华南中国sonarqube, 但我需要考虑我的开发管道中有多少工具。我目前在日常工作中使用 ReSharper 和前缀。NDepend 和 PVS-工作室每周一次的基础上, 但只在个人和开源项目。我可以在混合中添加另一个吗?确保!这不是侵入性的, 不会与 ReSharper 或 VS 代码提示冲突。在报告代码相关问题的方式上也有一些轻微的幽默。
通过 IDE 的用法
使用此工具的选项尚未更改, 但它支持三shou欢迎的 IDE 的:
IntelliJ视觉工作室蚀全mian的语言支持来自 IntelliJ 和 Eclipse 的 IDE。如果您使用的是 Visual Studio (VS), 那么您将得到一个很好的 c# 和 VB.NET 规则集。
您也可以在命令行中使用它, 这对于连续生成管线来说是的。需要通过 MSBuild 进行分析, 因为它们的命令行工具当前未按广告方式工作。运行分析是很容易的, 而且我可以在构建的末尾处理一个 XML 文件, 以生成报告或存储某处以便随着时间的推移进行分析。需要注意的一点是, XML 报告将在每个项目目录中生成一次。
msbuild n/p: RunCodeAnalysis = true/p: CodeAnalysisLogFile = MyXmlReport. xml1msbuild n/p: RunCodeAnalysis = true/p: CodeAnalysisLogFile = MyXmlReport. xml与 Visual Studio 中的规则交互
有一个广泛的214规则 c# 和62的 VB.NET, 虽然它们不是所有的默认启用。可以对规则进行定制, 以便为一个项目运行一个规则集, 并为另一个项目设置另一个规则集, 我将在短期内解释。
在真正的 VS 时尚代码, 违反了其中的一个规则得到一个弯曲线下面的代码行, 然后可以处理通过按 ctrl+。还有漂亮的功能, 这是新的 VS2017, 它使工作与分析仪更愉快。它不仅允许我修复当前正在查看的问题, 而且还可以解决相同的问题文档、项目或解决方案。很好。
正如您在下面所看到的, 还有用于禁止规则的选项。您可以内联或在它为您创建的全局抑制文件中执行此项。
# 杂注指令还有一个说明作为注释, 它可能对其他开发人员有帮助。通常我需要查找杂注代码, 所以这是一个不错的 VS 功能, 提高了整个开发人员的经验。
我真正喜欢的另一个特性是, 这些警告给出了一个简短的段落, 解释了规则冲突背后的原因。这个特别的警告是真正引起共鸣的东西, 因为我不喜欢注释代码。应删除死代码。如果有机会, 你认为你会需要它后, 那么没有问题, 这就是源代码管理的是!
如果您需要完整的规则列表, 我发现联机帮助非常有用, 因为您可以通过各种带有标记的规则类型进行筛选。
定制规则
与 VS works 的代码分析方式保持一致, 您可以通过右键单击分析器节点 inVS 并选择 '打开活动规则集' 来访问规则列表。
从那里, 规则集只是另一个类别节点。如果您想了解有关定制规则集的更多信息, 我有一个关于 Visual Studio 代码分析的博客文章, 它将在更深入地进行。
一个知道的陷阱
我无法得到规则运行在构建和不断得到这个错误。
警告 CA0064: 由于无法加载指ding的规则集或不包含任何托管代码分析规则, 因此未执行任何分析。
我确实在 SonarLint 谷歌集团发布了一个问题, 但据我所知, 它是孤立于我的机器。如果发生这种情况, 您需要添加分析器程序集 SonarAnalyzer.CSharp.dll, 如下所示。
如果希望分析在生成时运行, 请通过 '项目属性' 并单击 '在生成时启用代码分析', 在每个项目基础上启用分析。
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-perties
信息:项目配置文件:/Users/manisarkar/bn_projects/TimelineJS/sonar-perties
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,中国sonarqube教程,你可以浏览http:// localhost:9000 / dashboard / index / TimelineJS
14:11:38.292 INFO - 执行工作后类portJob
14:11:38.293 INFO - 执行岗位职责类re.ndIssueNotificatiPo的sdtJob
14:11:38.314 INFO - 执行工作后类re.dexProjectPo的stJob
14:11:38.356 INFO - 执行工作后类ugins.jectPurgePo的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-perties文件来帮助创建新的,即非Maven Java项目的Sonar设置[05]和SonarQube Runner [06]分析。
注意:SonarQube Runner希望SonarQube在指ding端口上运行,否则会抛出错误,例如ERROR:Sonar server http:// localhost:9000无法访问。这当然可以通过配置文件进行更改(参见上一篇文章[01])。
SonarQube组件
一旦构建完成并成功,可以在仪表板中找到新的或更新的项目。钻入项目将带来一个屏幕,载入重要指标和分析项目的各个方面:
(以上是示例应用程序的屏幕截图)
令人感兴趣的主要重要组成部分是质量指标,复杂因素,复杂性(左下),测试覆盖率指标(单位测试覆盖率和单位测试成功率)。可能安全违规。 Package Tangle Index and Dependencies to cut,绝dui是方便的,以保持清洁的包和松散耦合的依赖关系。同样的说法,LCOM4(方法中缺少凝聚力 - 降值越好),复杂性也揭示了你的类,方法和功能的松散耦合 - 它也是在文件级别和整体级别给出全图。所有这些组件都是软件质量的良好指标,至少如果不是软件工艺 - 底层代码写在质量上有多好?或者它可以被看作是 - 仍然是充足的改进和重构的房间。
热点视图现在进一步分析了分析的其他一些重要方面,并突出显示需要更多关注的领域或者一个更多的问题在其顶点附近 - 要么超越da允许限制,中国sonarqube安全审计,要么需要更多的抛光才能满足要求。
(以上是在网站上发布的JDK7的截图)
我非常喜欢下面的设计组件,它可以很好地分解包装依赖关系并强调依赖循环。它是中大型项目中更复杂的事情之一,通常可能会阻碍模块化。
华南中国sonarqube-苏州华克斯公司由苏州华克斯信息科技有限公司提供。“Loadrunner,Fortify,源代码审计,源代码扫描”选择苏州华克斯信息科技有限公司,公司位于:苏州工业园区新平街388号,多年来,华克斯坚持为客户提供好的服务,联系人:华克斯。欢迎广大新老客户来电,来函,亲临指导,洽谈业务。华克斯期待成为您的长期合作伙伴!