将SonarQube指标集成到TFS构建中 - 简介
2014年7月31日/ ANDYBDEV
我一直在努力将SonarQube整合到我们每周运行的TFS中。如果你不知道SonarQube是否检查出来。它是一个很好的方法来集中有关您的代码的信息,这有助于捕获和跟踪关注KPI的人的指标(如果我们必须让他们至少对他们的代码质量有积极的作用),同时给那些“它是一个中心的地方,可以看到他们可以改进的代码质量等问题。
以前,我们从TFS开发了一个单独的Jenkins构建阅读源,但是我们希望摆脱这个额外的构建,并且只需在TFS中执行一次 - 似乎有点浪费和耗时地整理Jenkins以及TFS。事实证明,我已经有了很好的时机(在写作的时候),近才有声纳可以处理微软测试结果和覆盖文件的上传(分别为.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/)。我不太喜欢自定义程序集,因为您需要创建一个项目来管理模板,并提供大量引用来删除所有的警告和错误,并且实际上允许您配置导入的活动,从那时起就成为一个需要从项目中编辑你的模板 - 我知道..它没有什么大不了的,但我宁愿把它作为一个简单的可编辑工作流程。然后,您需要将程序集提供给构建控制器,我希望避免需要这样做 - 加上我曾经遇到过这样的问题,以便与过去的托管Team Foundation Service一起工作,这在历史的上使我无法避免。
考虑到这些要点,我已经采取了一种方法,这意味着大多数工作可以使用标准活动在构建模板中完成,其余的工作可以在几个可以坐在源中的批处理文件中完成。
我会引导你完成这个过程。





SonarSource简介
具有 Artifactory 和 Sonarqube 集成的连续交付准备 Gradle 项目当玩弄持续集成/交付/部署的概念时, 我在 Gradle 构建以及如何将它们集成到这些概念中而苦苦挣扎。Gradle 在构建工具环境中越来越重要, 因此我创建了一个关于如何使用它的模板或原型。我选择了一个场景, 我看到了 Maven 和其他工具已经实现了:
推动风投转向中央风投将更改标记为特定 id 并将其推回中央 VCS使用单元测试执行生成执行声纳分析执行 artifactory 上载此链使您能够不断地将每个更改设置标记、单元测试、分析并上载到您的工件存储库, 以备部署。简而言之, 这是 (从我的角度来看) 持续交货的精神。
环境:
Gradle 3.5 (通过项目的 Gradle 包装)Artifactory: 5.2. 1-OSS, 运行在 http://localhost:8081/artifactorySonarqube: 6.3.1, 跑在 http://localhost:9000注意: 在这种情况下, Sonarqube 和 Artifactory 将由管理员用户使用。在实际生产环境中, 必须将其更改为更安全的方式
首先, 我在 Artifactory 中添加了一个本地 (m2-compatible) 和两个远程存储库:
"库-释放-本地" 是为了保存我自己的工件 (这就是为什么它被称为 "本地")"插件-gradle-org" 指向远程回购 "https://plugins.gradle.org/m2/" (这是 gradle 插件所必需的)"repo1-maven-org" 指向远程回购 "http://repo1.maven.org/maven2/" (这是项目的所有其他依赖项所必需的)此外,代理商sonarqube开源代码质量管理软件, 我创建了一个虚拟的回购 "释放" 包含所有 3 mentionend 回购。这使得从一个位置获取所有发布的库更容易。
该项目本身并不真正重要的这篇文章。我认为这是一个标准的 java 项目, 遵循 Maven/Gradle 的惯例。更有趣的部分是 Gradle 文件:
gradle/包装/gradle 包装。生成. gradle凭据. 属性gradle. 属性设置. gradle
SonarSource交付管道,
持续的交付和 DevOps 是众所周知的和广泛传播的做法现在。人们普遍认为,sonarqube开源代码质量管理软件, 重要的是组建伟大的团队, 首先定义共同的目标, 然后选择和整合适合于给定任务的工具。通常, 它是一个轻量级工具的混搭, 它们集成在一起建立连续的交付管道并支持 DevOps 的计划。在这个博客文章中, 我们放大到了整个管道的一个重要部分, 这就是经常被称为连续检查的学科, 它包括检查代码并在上面注入一个质量门, 并显示在达到质量门后如何上传工件。DevOps 的启用工具包括詹金斯、SonarQube 和 Artifactory。
的用例你已经知道质量不能在事后被注入, 而是从一开始就应该是过程和产品的一部分。作为一种常用的良好做法, 强烈建议您尽快检查代码并使结果可见。因为 SonarQube 是一个很好的选择。但 SonarQube 不只是运行在任何孤立的岛屿,中国sonarqube开源代码质量管理软件, 它是集成在一个输送管道。作为管道的一部分, 代码被检查, 并且仅当代码根据定义的要求是好的, 换句话说: 它满足质量门, 被建立的工件被上传到二进制存储库管理器。
让我们考虑下面的场景。其中一个繁忙的开发人员必须修复代码, 并检查对中央版本控制系统的更改。白天很长, 晚上很短, 而且对所有团队的承诺, 开发人员没有检查本地沙箱中代码的质量。幸运的是, 有构建引擎詹金斯作为一个单一的真理点, 实现交付管道与其本地管道功能, 并作为一个方便的巧合 SonarQube 有支持詹金斯管道。
此更改将触发管线的新运行。哦不!生成管线中断, 并且未进一步处理更改。在下面的图像中, 您会看到已定义的质量门被忽略。可视化是由詹金斯蓝色海洋完成的。
01 PipelineFailedBlueOcean
SonarQube 检验潜在的问题是什么?我们可以打开 SonarQube 的 web 应用程序并深入查找。在 Java 代码中, 显然没有将字符串文本放在右侧。
02发现
在团队会议中, 决定将其定义为一个阻止程序, 并相应地配置 SonarQube。此外, 建立了一个 SonarQube 质量门, 以打破任何建设, 如果一个拦截qi被确定。现在让我们快速查看代码。是的, SonarQube 是对的, 下面的代码段有问题。
03 FindingVisualizedInCode
我们不希望详细讨论所有使用的工具, 也涵盖完整的詹金斯构建工作将超出范围。但有趣的提取这里的检查方面是在詹金斯管道 DSL 中定义的以下阶段:
配置. xml: SonarQube 检查阶段 ("SonarQube 分析") {withSonarQubeEnv ("声纳") {mvn 组织 sonarsource 扫描仪. maven: 声纳-maven-插件: 3.3. 0.603: 声纳 +"-f 所有/pom" xml +"-Dsonar projectKey = com. huettermann: 全部: 主" +"-Dsonar" 登录 = $ SONAR_UN +"-Dsonar" 密码 = $ SONAR_PW +"-Dsonar" 语言 = java +"-Dsonar。" 的+"-Dsonar。" 的+-Dsonar 测试. 夹杂物 = ** 测试 *** +"-Dsonar. 排除/**/** 测试 ***"}}用于运行 SonarQube 分析的阶段。允许选择要与之交互的 SonarQube 服务器。运行和配置扫描仪, 许多可用的选项, 请检查文档。许多选项可用于集成和配置 SonarQube。请参阅文档中的替代方案。同样适用于其他覆盖的工具。SonarQube 质量门作为詹金斯管线阶段的一部分, SonarQube 配置为运行和检查代码。但这仅仅是第yi部分, 因为我们现在还想添加质量门, 以打破构建。下一阶段正好涵盖了这一点, 请参阅下一片段。管道被暂停,中国sonarqube开源代码质量管理软件, 直到质量门被计算, 特别是 waitForQualityGate 步骤将暂停管道, 直到 SonarQube 分析完成并返回质量门状态。如果遗漏了质量门, 则生成将中断。
sonarqube开源代码质量管理软件-苏州华克斯由苏州华克斯信息科技有限公司提供。苏州华克斯信息科技有限公司坚持“以人为本”的企业理念,拥有一支高素质的员工队伍,力求提供更好的产品和服务回馈社会,并欢迎广大新老客户光临惠顾,真诚合作、共创美好未来。华克斯——您可信赖的朋友,公司地址:苏州工业园区新平街388号,联系人:华克斯。