如何使用 SonarQube 改进工作流
twitter作为开发人员, 我不得不多次修复生产环境中的问题。有时, 我在代码之前没有看到任何错误, 而在其他时间, 我花了很多时间试图理解别人写的代码-更糟的是, 我把代码放到生产中, 在几个月后发现了安全漏洞。
很可能你也面对过这种情况。因此, 有一个工具, 可以帮助您在早期阶段检测到它们, 岂不是很棒吗?SonarQube 使这成为可能。在这篇文章中, 您将了解它如何帮助您清理代码并防止将来出现问题。
SonarQube 入门SonarQube 是一个开放源码的质量管理平台, 致力于不断分析和测量技术质量, 从***早的计划阶段到生产。通过将静态和动态分析工具结合在一起, SonarQube 连续监视七轴上的代码, 如重复代码、编码标准、单元测试、复杂代码、潜在 bug、注释和设计以及体系结构。
SonarQube 是一种用于主要编程语言的代码分析器, 如 c/c++、JavaScript、Java、c#、PHP 或 Python, 等等。通常, 应用程序同时使用多种编程语言, 例如: Java、JavaScript 和 HTML 的组合。SonarQube 自动检测这些语言并调用相应的分析器。
SonarQube 现在是 Bitnami 目录的一部分。您可以***或推出它与我们准备使用的云图像只需几次点击和开始使用它在您的所有项目。利用 Bitnami 图像的特点: 安全、***xin、优化、一致等。
玩 SonarQube在这个 GitHub 的项目中, 您将找到一个用 JavaScript 编写的代码示例。目标: 向您展示如何将 SonarQube 合并到您的开发工作流中。存储库包含两个主文件夹 (源和测试), 这样, 您就可以知道测试所涵盖的代码的百分比。
这个项目还包括一个声纳工程. 属性文件, 其中有一些配置参数需要配置 SonarQube, 如用户名, 密码, 语言等。
运行
$ 声纳-扫描仪在项目文件夹内, 这样就启动了第yi个扫描仪, 您可以在 web 界面中检查结果。
第yi次扫描
正如您在上面的截图中所看到的, 当前的代码有零 bug、零漏洞和六代码的气味。
我将修改源代码以引入一个 bug 和一个漏洞。这一次是有意的, 但是在日常的工作中, 这样的问题会在你没有意识到的情况下出现。
添加错误
再次运行扫描仪使用
$ 声纳-扫描仪如预期的那样, 将出现新的 bug 和漏洞。再次检查分析以查看所做的更改:
比较扫描
屏幕右侧将出现一个新节 (以黄色高亮显示)。SonarQube 处理两种状态: 当前状态 (以白色表示) 和***xin更改。正如您在截图中所看到的, 上次扫描中引入的更改增加了一个 bug 和一个漏洞。SonarQube 评估每个部分的质量, 评分基于不同的参数, 一个是***jia状态。在这种情况下, 引入 bug 导致 'bug' 部分从 a 传递到 C, '漏洞' 部分从 a 到 B。
您可以设置 '泄漏期间' 来确定要进行比较的方式: 按时间或在每个扫描仪执行之间。
让我们详细地看看 '覆盖率' 一节: 38.1% 是***测试覆盖率 (正如您在 GitHub 存储库中看到的那样, 我对某些文件进行了测试, 但对于所有的文档都没有)。在黄色部分, 您可以看到新添加的行的覆盖率。以前, 为了添加错误, 我引入了一些新行, 但我没有为这些新行创建任何测试, 因此新的测试覆盖率为0%。此外, 点击覆盖范围, 我可以看到更多的信息的覆盖面, 例如: 覆盖的文件, 覆盖线的数量, 等等。
错误信息
通过这种快速而简单的分析 (您只需执行一个命令), 您将能够防止出现在生产环境中的错误, 使代码保持安全并遵守***jia做法和质量标准。在下面的迭代中, 我将致力于实现零 bug、漏洞和代码气味的目标。我还可以在测试中得到100% 的代码。一旦我的代码处于这种状态, 就很容易看出所做的更改是否引入了某种错误或坏的做法。
如何挤压 SonarQube正如您在上一节中看到的, 保持代码的良好状态非常简单。但是, 还有更多的发现。SonarQube 有很多很酷的集成。
分析方法可以在下列分析方法之间进行选择:
用于 MSBuild 的 SonarQube 扫描仪:. Net 项目的启动分析SonarQube 扫描器: maven 的启动分析和***xiao配置SonarQube 扫描器 Gradle: 发射 Gradle 分析蚂蚁 SonarQube 扫描器: 蚂蚁发射分析詹金斯 SonarQube 扫描仪: 詹金斯发射分析SonarQube 扫描仪: 当其他分析器都不合适时, 从命令行启动分析插件另外, SonarQube 有一个更新中心与各种各样的插件组织入不同的类别, 一些有用的插件是:
代码分析器
SonarCFamily c/c++SonarPHPSonarJSSonarWebSonarJavacss集成
GitHub 插件: 分析拉请求, 并指出问题作为评论。谷歌分析: 将 google 分析跟踪脚本添加到 SonarQube 的 web 应用程序中。单片机引擎
善变的: 增加对善变的支持。git: 添加对 git 的支持。SVN: 添加对 Subversion 的支持。身份验证和授权
GitHub 身份验证: 通过 GitHub 启用用户身份验证和单一登录。GitLab 身份验证: 通过 GitLab 启用用户身份验证和单一登录。谷歌认证: 启用用户身份验证授权到谷歌。读过这篇文章后, 你可能想尝试 SonarQube, 看看它是如何融入你的日常工作的。您可以直接从 Bitnami 目录***或启动它。
快乐 (和安全) 编码!
SonarSource 的产品和服务被世界各地的客户所使用。所有规模的组织都在使用来自 SonarSource 的产品和服务提高生产率, 降低风险,代理商sonarqube规则, ***终开发更好的软件。SonarQube 在欧洲的三不同地点的开发团队每天都在使用。质量结果显示在墙上显示器!Kapsch TrafficCom (理事会) 是智能交通系统的提供商。它的系统采用信息和通信技术来支持和优化公路运输, 包括基础设施、车辆、用户和工业。它在各种交通应用领域的解决方案有助于减少道路交通造成的拥堵和环境污染, 提高交通安全和安全。理事会集团在33国家设有子公司和代表处, 并有3000多名员工。软件质量很重要, 因为 Kapsch 需要向其客户提供***jia的软件解决方案, 同时遵循行业标准, 如汽车行业的 MISRA 准则。即将失去对软件质量的关注
Kapsch TrafficCom 因快速扩张而失去了对软件质量的关注。这种扩展导致了一些新的编程语言的使用, 并雇用了许多新的开发人员。理事会预见到需要更好地控制, 遵循编码准则, 并确保它开发的应用程序在发布之前达到了定义的质量目标。此外, 技术债务的趋势需要更加明显, 以帮助决策者达成关于重构与引入新特性的知情决策。由于理事会在静态代码分析中使用了几种不同的解决方案, 因此很难同时将整个代码库的这一概述放在一起。SONARQUBE 的自下而上采用
然后, 瑞典理事会办公室的***遇到了 SonarQube。这一收养***是由管理层和其他理事会的开发网站所采纳的自下而上的方法。在年内, 它将被采用在更多的地点, 并作为理事会的主要解决方案, 跟踪代码质量。在这一收养中, 关键是 SonarQube 使用相同的度量标准来衡量每种语言。理事会使用几种不同的语言, 现在它们都可以以统一的方式呈现。可以很容易地看到当前的度量状态, 以及它们是否在正确的方向上移动。此外, 项目组合管理 (视图) 插件允许理事会从多语言应用程序中聚合质量度量, 将每个应用程序的质量统一起来, 并将应用程序进一步聚合到产品、项目和部门质量的统一演示中。更美好的是, '由于我们每夜都在分析我们的大部分产品, 所以现在每个人都可以按需获取***xin的结果 (在每个聚合级别)',吉林sonarqube规则, 瑞典理事会的测试组长约翰 Esbj?rner 说。Kapsch TrafficCom 使用的主要功能包括:时间机器-跟踪关键代码质量度量的进度。视图-将多种语言聚合到产品/项目/部门中。差异视图-检查遗留项目中是否引入了新问题。Java API-创建自己的集成插件, 因为它已经做了宝丽来 ALM。SONARQUBE 结果显示在墙上显示器上
SonarQube 目前正被用于检查超过30应用程序和700k 代码行的代码质量, 并且这些数字预计会随着全年的采用而不断增加。它每天都被开发团队使用, 它们遍布欧洲三不同的开发站点。Esbj?rner 表示, '我们可以利用我们现有的詹金斯基础结构来触发静态分析, 从而缓解了向 SonarQube 的过渡, 因此无需额外的服务器。让所有利益相关者通过 web 浏览器轻松地访问结果, 并显示在人们走过的墙壁监视器上,中国sonarqube规则, 从而提高了对代码质量的认识。这些指标已成为一种帮助, 以可视化需要做什么。早些时候, 开发人员知道代码需要重构, 但是很难得到标准的数据来向决策者展示。现在, 他们可以通过打开 web 浏览器并显示度量和代码来做到这一点。今天, 质量门是为所有语言定义的, 因此新功能并不总能战胜重构。在发布前始终满足***di质量级别要求。
SonarSource
在这些更复杂的环境中, 组织必须做更多的事情。
***竞争环境, 资源很少和/或减少。他们必须弥合 everincreasing
它与业务的新形式的社会参与之间的差距, 并抗衡
随着更多的要求创新的应用程序, 满足业务和
消费者的需求。
企业项目在激烈的***压力下***的水平和率
技术变化要求部门协同工作, 包括业务干系人
和跨 IT、开发、质量和运营的管理人员, 以便在竞争中生存。
正如我们看到的组织转向复杂的采购, 以解决这些业务和
技术需求, 我们看到了对软件分析、自动化和通用过程的需求
通过.对于 IDC 来说, 复杂的采购意味着利用外部服务提供商的资源
(如陆上和近海 SIs), 来自商业、IT、基础设施的内部资源,
承包商, 并使用开源软件 (OSS) 解决方案和组件。
需要建立伙伴关系和使用一系列资源, 要求管理、自动化、
和质量的协调。代码质量的可见性成为关键, 有助于提高
行为, 以产生更好的软件和地图团队的适当类型的项目给
经验水平和执行 (即使机会成为教育团队
更有效地执行)。服务提供商和内部员工都需要 '他们的游戏' 与
关于软件的创建、适当的质量和缺陷的积压。'技术债务' 只能
识别和解决, 如果它是可见的, 可以通过适当的自动化工具启用和
过程策略的采用和分析, 以了解影响。
这一 IDC 技术聚焦将讨论改进软件分析方法的必要性,
缺陷管理、安全和度量, 通过主动可见性来获得业务和 IT 好处。
那些不懂历史的人注定要重蹈覆辙;这句谚语也适用于无效
软件创建、质量和缺陷缓解和解决方法。
不断变化的质量观
随着企业越来越依赖于技术和软件来提供***产品,代理商sonarqube规则,
CIO 的工作正在转变。预算没有增加, 但业务期望它能够
在高度复杂的环境中比以前更快地交付新的业务价值
提高了对质量的期望。此外, 有一种期望, 它会变得更清楚
新的业务目标, 并将 IT 优先级与之相匹配。一个关键的挑战是如何使
更快地交付更高质量的应用程序, 以满足业务和客户需求。它, 并
cio 必须超越提高 IT 效率以实现业务创新, 并提供
具有持续部署和改进的软件实践的***客户体验。和一个
基本的构建模块是代码分析和管理。
缺乏对代码质量的可见性, 以及导致问题的代码更加明显
和更多的削弱企业现在由于能见度和曝光要求
移动和其他面向客户的应用程序。这已经成为高管们的***问题,
那些在代码创建级别的组织。
开发和提供高质量的软件版本和新的面向客户的应用程序
时间是一个越来越大的挑战, 特别是对于那些必须与复杂的
与遗留系统和资源相结合的现代技术网络。组织必须
解决内部业务的需求-企业应用程序的扩展和可用性
移动/社会/云平台-以及满足客户/消费者对可用性的需求
创新的应用。然而, 如何做到这一点, 而不提供洞察问题, 因为它们是
无意中创建的?
可以做些什么来提高整体软件质量以减少问题和风险, 同时
加快发布周期, 使新的服务和产品更快地投放市场?这
要求对软件漏洞和缺陷进行有效和早期的管理, 以使
主动的质量战略和降低成本。然而, 如何才能减轻现有的不良行为
***hao完成这些目标?
华克斯-吉林sonarqube规则由苏州华克斯信息科技有限公司提供。苏州华克斯信息科技有限公司在行业软件这一领域倾注了诸多的热忱和热情,华克斯一直以客户为中心、为客户创造价值的理念、以品质、服务来赢得市场,衷心希望能与社会各界合作,共创成功,共创辉煌。相关业务欢迎垂询,联系人:华克斯。