如何使用 SonarQube 改进工作流
twitter作为开发人员, 我不得不多次修复生产环境中的问题。有时, 我在代码之前没有看到任何错误, 而在其他时间,我花了很多时间试图理解别人写的代码-更糟的是, 我把代码放到生产中, 在几个月后发现了安全漏洞。
很可能你也面对过这种情况。有一个工具, 可以帮助您在早期阶段检测到它们, 岂不是很棒吗?SonarQube使这成为可能。在这篇文章中, 您将了解它如何帮助您清理代码并防止将来出现问题。
SonarQube 入门SonarQube 是一个开放源码的质量管理平台, 致力于不断分析和测量技术质量,从早的计划阶段到生产。通过将静态和动态分析工具结合在一起,代理商sonarqube代理商, SonarQube 连续监视七轴上的代码,如重复代码、编码标准、单元测试、复杂代码、潜在bug、注释和设计以及体系结构。SonarQube是一个开源平台,并被开发牢记一个主要目标:"使代码质量管理可供每个人使用xiao的努力。
SonarQube 是一种用于主要编程语言的代码分析器, 如 c/c++、JavaScript、Java、c#、PHP 或Python, 等等。通常, 应用程序使用多种编程语言, 例如: Java、JavaScript 和 HTML的组合。SonarQube自动检测这些语言并调用相应的分析器。在所有情况下,连续检查帮助这些公司大大提高了软件质量和稳定,通常节省数百万美元,否则将花费在根本原因分析和危机管理。
SonarQube 现在是 Bitnami目录的一部分。您可以或推出它与我们准备使用的云图像只需几次点击和开始使用它在您的所有项目。利用 Bitnami 图像的特点:安全、xin、优化、一致等。
玩 SonarQube在这个 GitHub 的项目中,中国sonarqube代理商, 您将找到一个用 JavaScript编写的代码示例。目标: 向您展示如何将 SonarQube 合并到您的开发工作流中。存储库包含两个主文件夹 (源和测试), 这样,您就可以知道测试所涵盖的代码的百分比。sonarqube产品支持,规则优化,规则自定义等服务,由sonarqube中国总代理,苏州华克斯信息科技有限公司提供。
这个项目还包括一个声纳工程. 属性文件, 其中有一些配置参数需要配置 SonarQube, 如用户名, 密码, 语言等。
运行
$ 声纳-扫描仪在项目文件夹内,华中sonarqube代理商, 这样就启动了第yi个扫描仪, 您可以在 web界面中检查结果。
第yi次扫描
正如您在上面的截图中所看到的, 当前的代码有零 bug、零漏洞和六代码的气味。
我将修改源代码以引入一个 bug 和一个漏洞。这一次是有意的, 在日常的工作中,这样的问题会在你没有意识到的情况下出现。
添加错误
运行扫描仪使用
$ 声纳-扫描仪如预期的那样, 将出现新的 bug 和漏洞。检查分析以查看所做的更改:
比较扫描
屏幕右侧将出现一个新节 (以黄色高亮显示)。SonarQube 处理两种状态: 当前状态 (以白色表示)和xin更改。正如您在截图中所看到的, 上次扫描中引入的更改增加了一个 bug 和一个漏洞。SonarQube 评估每个部分的质量,评分基于不同的参数, 一个是jia状态。在这种情况下, 引入 bug 导致 "bug" 部分从 a 传递到 C, "漏洞" 部分从 a到 B。配置是重复的,更糟糕的是,每个功能分支都包含了主分支中的所有问题和债wu。
您可以设置 "泄漏期间" 来确定要进行比较的方式: 按时间或在每个扫描仪执行之间。
让我们详细地看看 "覆盖率" 一节: 38.1% 是测试覆盖率 (正如您在 GitHub 存储库中看到的那样,我对某些文件进行了测试, 但对于所有的文档都没有)。在黄色部分, 您可以看到新添加的行的覆盖率。以前, 为了添加错误,我引入了一些新行, 但我没有为这些新行创建任何测试, 新的测试覆盖率为0%。点击覆盖范围, 我可以看到更多的信息的覆盖面,例如: 覆盖的文件,中国sonarqube代理商, 覆盖线的数量,等等。在实践中,这意味着设置一个质量的酒吧(或"门"的SonarSource行话)新的变化,但大多忽略现有的问题,直到你得到控制的事情。
错误信息
通过这种快速而简单的分析 (您只需执行一个命令), 您将能够防止出现在生产环境中的错误,使代码保持安全并遵守jia做法和质量标准。在下面的迭代中, 我将致力于实现零bug、漏洞和代码气味的目标。我还可以在测试中得到**** 的代码。一旦我的代码处于这种状态,就很容易看出所做的更改是否引入了某种错误或坏的做法。经过不断的检验,企业终于可以接受代码质量whole-heartedly,并da化其软件ROI。
如何挤压 SonarQube正如您在上一节中看到的, 保持代码的良好状态非常简单。还有更多的发现。SonarQube有很多很酷的集成。
分析方法可以在下列分析方法之间进行选择:
代码分析器
SonarCFamily c/c++SonarPHPSonarJSSonarWebSonarJavacss集成
GitHub 插件: 分析拉请求, 并指出问题作为评论。谷歌分析: 将 google 分析跟踪脚本添加到 SonarQube 的web 应用程序中。单片机引擎
善变的: 增加对善变的支持。git: 添加对 git 的支持。SVN: 添加对 Subversion的支持。身份验证和授权
GitHub 身份验证: 通过 GitHub 启用用户身份验证和单一登录。GitLab 身份验证: 通过 GitLab启用用户身份验证和单一登录。谷歌认证: 启用用户身份验证授权到谷歌。读过这篇文章后, 你可能想尝试 SonarQube,看看它是如何融入你的日常工作的。您可以直接从 Bitnami目录或启动它。此IDC技术聚焦讨论了服务提供商的策略,以改进软件分析、缺陷管理、安全性和度量的方法,从而通过主动可见性来获得业务和IT好处。
快乐 (和安全) 编码!
SonarSource交付管道,
持续的交付和 DevOps 是众所周知的和广泛传播的做法现在。人们普遍认为, 重要的是组建伟大的团队, 定义共同的目标,选择和整合适合于给定任务的工具。通常, 它是一个轻量级工具的混搭, 它们集成在一起建立连续的交付管道并支持 DevOps的计划。在这个博客文章中, 我们放大到了整个管道的一个重要部分, 这就是经常被称为连续检查的学科,它包括检查代码并在上面注入一个质量门, 并显示在达到质量门后如何上传工件。DevOps 的启用工具包括詹金斯、SonarQube 和Artifactory。软件质量数据必须提供绝dui(在所有代码)和差异(新的代码)值,以便开发团队可以完全控制问题的传入流程。
的用例你已经知道质量不能在事后被注入, 而是从一开始就应该是过程和产品的一部分。作为一种常用的良好做法,强烈建议您尽快检查代码并使结果可见。因为 SonarQube 是一个很好的选择。但 SonarQube 不只是运行在任何孤立的岛屿,它是集成在一个输送管道。作为管道的一部分, 代码被检查, 并且仅当代码根据定义的要求是好的, 它满足质量门,被建立的工件被上传到二进制存储库管理器。根据他们的本性准时的审核会导致开发周期的中断,因为它们会导致更改"已完成"软件。
让我们考虑下面的场景。其中一个繁忙的开发人员必须修复代码, 并检查对中央版本控制系统的更改。白天很长, 晚上很短,对所有团队的承诺, 开发人员没有检查本地沙箱中代码的质量。幸运的是, 有构建引擎詹金斯作为一个单一的真理点,实现交付管道与其本地管道功能, 并作为一个方便的巧合 SonarQube有支持詹金斯管道。在集成SonarQube与我们的连续集成过程与Jenkin。
此更改将触发管线的新运行。哦不!生成管线中断, 并且未处理更改。在下面的图像中,您会看到已定义的质量门被忽略。可视化是由詹金斯蓝色海洋完成的。
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部分, 因为我们现在还想添加质量门, 以打破构建。下一阶段正好涵盖了这一点,请参阅下一片段。管道被暂停, 直到质量门被计算, 特别是 waitForQualityGate 步骤将暂停管道, 直到SonarQube 分析完成并返回质量门状态。如果遗漏了质量门,则生成将中断。提高质量:SonarQube可以作为一个多维分析员进行操作,并且可以对代码质量的七部分进行通知。
SonarSource简介
治理产品为 gear-up SonarQube 提供了从团队级部署到企业广泛部署 SonarSource解决方案的功能。它是组织和管理大型项目组合的基石, 其质量模型基于4关键指标: 性、可维护性、可靠性和安全性。
组织大量的应用程序
治理产品提供了组织和构建大型应用程序组合的能力。这是通过定义树来完成的, 其中节点是项目组和项目的叶子。例如,可以按应用程序、按团队的应用程序、按部门分组等对项目进行分类。
治理
树的数量没有限制, 树木的深度也没有限制。
评估总体健康状况
治理产品为应用程序组合提供了几个健康因素, 包括可维护性, 又称技术债务, 它代表了应用程序或应用程序组的未来维护成本,以及性, 它代表了应用程序或应用程序组准备装运到生产的情况。
治理
突出风险领域
治理产品作为散热器, 在应用程序组合中突出显示风险区域。这包括操作风险, 即不同于运行时的预期行为以及安全漏洞风险的应用程序,即可用于其他目的的应用程序, 而不是它们的设计用途。
治理PDF 文件导出 PDF 报表
治理产品增加了将执行仪表板作为 pdf 导出的能力, 以便能够在 web 应用程序之外共享一个投资组合。还可以安排将 PDF报告定期发送到预定义的收件人列表, 从而在任何级别的投资组合中进行。查看示例项目转移转移项目历史记录
在大型组织中, 为不同部门、业务线运行多个 SonarQube 的实例非常常见, 但也有历史原因。如果是这种情况,则需要能够在保留项目历史记录的将项目从实例转移到另一项。治理产品提供了这种功能。通过扩展, 此功能允许合并 SonarQube的两个实例。如往常一样,使用子项目的关联属性组中的SYSLIB字段来解析包含文件引用。
债务模型控制调整分析模型
每个代码分析器都包含每个规则的预定义补救成本。这些费用在发现问题时适用,允许计算技术债务补救费用。这些补救费用已在几百万行代码上进行了调整, 并且可以按目前的情况使用, 但可能需要对它们进行调整,以反映环境中的某些具体情况。
中国sonarqube代理商-苏州华克斯公司由苏州华克斯信息科技有限公司提供。“Loadrunner,Fortify,源代码审计,源代码扫描”选择苏州华克斯信息科技有限公司,公司位于:苏州工业园区新平街388号,多年来,华克斯坚持为客户提供好的服务,联系人:华克斯。欢迎广大新老客户来电,来函,亲临指导,洽谈业务。华克斯期待成为您的长期合作伙伴!我们的研究表明大约40%的商业面向更改的软件开发项目未能满足这些要求。