SonarSource不断的检查, 新的软件质量范例, 解决和解决的关键挑战
在代码质量管理中:
太少, 太迟
推回
开发团队
缺乏过程
所有权
异构
要求
团队收到关于质量的持续反馈, 包括对一组
质量要求
一个清晰的, 更新的质量演变的图片随时可用, 包括
版本间的比较
团队可以从介绍中跟踪问题, 并提供反馈
一旦出现质量缺陷, 就会通知风险承担者
质量门每天执行
后的质量门迭代成为一个事件
开发商的持续教育导致良性循环的改善
质量行动计划直接在团队内部生成, 并集成在
开发过程
软件质量是开发过程的一部分
评论包括背景和历史信息, 包括不同
版本和对软件所做的各种更改
利益干系人可以访问有关其软件质量的有意义的信息
实时
开发团队一旦收到质量缺陷的信息
添加 (通过电子邮件, 在 IDE 中可见,...) 使问题立即得到解决
团队获得开发更好软件的能力
代码质量的归属属于开发团队
软件质量被嵌入到开发过程中, 成为
每个人的责任
整个组织都可以访问软件质量工具, 以
每个利益相关者
质量要求可以在团队中的共享、更新和评审
成员和整个组织
质量判断是以自动化的方式在客观的基础上做出的
事先发布到组织的标准。
报告清楚地显示了软件的可维护性, 并立即
不需要外部顾问就可以理解
开发人员的持续教育导致显著的软件质量
从长远来看改善
团队有能力测量新的和更改的软件质量
代码以及整个代码库
团队可以跟踪新问题的注入
SonarQube 平台
SonarQube 是一个连续的质量分析平台, 它作为 web 服务器运行, 跟踪指标
分析代码和代码结构。SonarQube 是一个开源平台, 并被开发
牢记一个主要目标: "使代码质量管理可供每个人使用
xiao的努力。SonarQube 生态系统是由 SonarQube 平台和一套
plug-ins 在公共基础设施上担任东道主。
SonarQube 实质上提供了代码分析器、仪表板、报告工具、问题跟踪和
TimeMachine 作为核心功能, 但它也有一个插件机制, 使社区能够
扩展功能 (当前有超过 60 plug-ins 可用)。
SonarQube 可以成为源代码质量的协调中心, 因为它不需要
限于开发人员或技术娴熟的, 但可以提供有用的信息广泛
项目经理, 技术领导, IT, 甚至在一个组织内的业务领导
可自定义的仪表板。SonarQube 的建筑和 plug-ins (如 SQALE) 和
管理和跟踪技术债务的机会可以为管理人员提供关键信息和
业务在整个软件生命周期中反复地主动地解决缺陷。他们提供
与质量和成本有关的项目的概述, 并帮助解决风险。
SonarQube 提供的不仅仅是关于软件健康的指标。由于开发人员
提供了一个粒度代码级别的信息, SonarQube 使这些构建软件
查找并深化到存在代码问题的位置。SonarSource 的产品组合使
对软件变更领域的反馈和影响分析, 并提供反馈, 说明如何
改进开发方法。产品还提供与构建管理的协调
(与詹金斯的支持), 以帮助实现持续集成的部署。
SonarQube 集成的工具, 如 FindBugs, Checkstyle, PMD, FXCop的, C的p的p的Check 出 of-the-box,
或提供 plug-ins。然后, 它可以充当代码分析工具的中心中心,
从而为多个项目提供历史洞察力和趋势分析。一体化的地方
分析和报告是一个加号, 即使组织选择不对发送的报告采取行动。
可以访问有关代码复杂性的历史数据和发现的问题工具的数量
该代码可以提供是否有效地构建软件的可视性, 或者如果方法
需要改变。
在语言方面, SonarQube 支持分析 Java 的核心, 但也有超过20
语言, 如 COBOL、c++、PL/SQL 和 c# 通过 plug-ins (开源或商业)
因为报告引擎是语言不可知的。
SonarQube 使组织能够在七轴上覆盖质量并报告:
重复代码
编码标准
按单元测试覆盖范围
复杂代码
潜在 bug
评论
设计与体系结构
xin版本还改进了软件质量属性的评估, 并
一个更好的工作范围的技术债务和孤立的问题, 创造技术债务,
根据参考。SonarQube 是可配置的, 可以给代码一个 "等级" (从 a 到
E), 并可以确定它通常在努力和所需的工作类型方面的成本
改进软件。例如, 由于缺少单元测试, 代码可能有较低的评级, 或者
由于大量的重复代码或安全违规。SonarQube 将显示
违规行为是并将估计解决这些问题的费用。用户可以更改工作量估计和
他们会被计算在内, 这是有帮助的。此版本还可以使比较团队
根据需要对项目和组织的各个部分进行评估。
虽然 SonarQube 可以在战shu上用于一次性审计, 但它可以更具战略性地利用
作为一个共享的, 共同的信息来源的质量分析正如刚才所描述的, 以帮助
支持代码质量的持续改进策略。
各种各样的组织使用 SonarQube 提供的产品组合的范围 (从
本公司的免费 "开源" 选项给企业, 站点范围内的 "终ji" 许可版本)。
然而, 目标在高端是大和非常大公司与企业, 分布
开发团队和合作伙伴协调。一人团队可以使用开源版本
显然, 这可以作为一个坡道上的收养。但一旦一个组织越过
在开发项目和用户的数量方面, 需要移动到
商业企业解决方案。IDC 发表了三企业客户参考
SonarQube, 主要是开始开放源码收养, 获得立足点, 然后演变
到部署1000以上的用户。
Ansible SonarQube 升级的角色
你可能知道, 并希望使用 SonarQube。这是一个伟大的工具, 是积极的发展和改善。这是伟大的, 如果你是一个开发使用 SonarQube。但是, 如果您碰巧管理 SonarQube 实例, 则由于升级指南由11步骤组成, 因此不断升级非常麻烦。
停止旧的 SonarQube 服务器
下载并解压新的 SonarQube 分布在一个新鲜的目录, 让我们说 NEW_SONARQUBE_HOME
使用默认的 H2 数据库启动它, 并使用更新中心安装您需要的插件
手动安装任何自定义插件
停止新服务器
更新声纳的内容. 属性和包装. 配置文件位于 NEW_SONARQUBE_HOME/配置目录中, 其内容与 OLD_SONARQUBE_HOME/配置目录中的相关文件 (web 服务器 URL、数据库设置等) 有关。不复制-粘贴旧文件
如果使用了自定义 JDBC 驱动程序, 请将其复制到 NEW_SONARQUBE_HOME/扩展/jdbc 驱动程序/<dialect>
备份数据库
删除数据/es 目录
启动新的 web 服务器
复制 http://localhost:9000/setup (用您自己的 URL 替换 "localhost:9000") 来浏览并按照安装说明进行操作
这是一个太多的步骤, 手动执行。因此, 我决定通过为它编写一个 Ansible 的角色来实现自动化。
初始设置
在我开始编写 Ansible 剧本之前, 我需要找到一种方法来测试我的代码。所以我开始与流浪汉旋转了一个虚拟机, 并提供了一个简单的脚本。这是需要有类似的环境, 以我们的实际 SonarQube 生产实例。我能够增量地构建我的 Ansible 剧本并在这个 VM 上测试它。很快我就明白了, 与流浪汉一起工作会减慢我的速度, 因为我需要重置环境, 而不是初的预期。所以我决定考虑泊坞窗。
用于测试的泊坞窗
我找到了正式的 SonarQube 泊坞窗图像, 但无法使用, 因为我们的 SonarQube 实例安装在 CentOS 和官fang图像使用不同的基础图像。另外, 我需要自定义特定的 SonarQube 版本我想开始。因此, 我创建了我们自己的 Dockerfile 与 CentOS 6 基地和 Ansible 安装。
此泊坞窗映像不需要启动 SonarQube, 因为我只是想验证是否进行了正确的文件更改, 而我的 Ansible 手册没有错误。升级的第yi步之一就是关闭服务器。
我将我的剧本装入容器, 并在该容器内运行 Ansible, 对该本地环境进行了更改。
当前脚本的路径
TESTS_DIR = $ (cd "$ (dirname" $ {BASH_SOURCE [0]} ")" & & 密码 "
# 命令测试剧本
TEST_COMMAND = "cd/行动 & & ansible-剧本 $ @
-我 ' 本地主机 '-c
升级-声纳 database.yml "
# 运行容器安装行动为卷
泊坞 run-v "$ TESTS_DIR/.。/行动/:/行动 "
"声纳-升级-测试"/"垃圾/bash-c" $ {TEST_COMMAND} "
在泊坞窗中运行我的剧本大大减少了反馈回路, 所以我决定泊坞窗是走的路。你可以看看我所有的脚本在 GitHub
Ansible 角色
我一步一步地往前走, 我到达了一个点, 一切似乎都在工作, 我有一个非常有用的 Ansible 的角色在我的手中。它尚未发布到 Ansible Galaxy, 但您可以在 GitHub 的 SonarQube 升级 Ansible 角色项目下找到源文件和文档。
当前 Ansible 角色通过在当前位置旁边创建新安装来升级 SonarQube。这提供了回滚的方法 (如果需要)。
此时, 角色执行以下任务:
确保特定的根用户存在于声纳安装
在所有安装所在的目录中创建声纳. sh
确保 SonarQube 服务存在
停止 SonarQube
下载新版本
备份数据库
下载和安装插件
将自定义配置应用于新实例
确保删除数据/es
重新 SonarQube 服务启动新版本
开始 SonarQube
手动步骤
这个过程仍然需要几个手动步骤。
在运行升级手册之前, 应手动确保在升级过程中要安装的插件列表是xin的。您可以从 SonarQube 的管理视图中获得xin支持的版本号。
根据 SonarQube 的建议, 此 Ansible 角色不仅复制以前安装的配置, 而且使用带有变量的模板来为新实例创建配置。这意味着在执行升级之前, 开发人员可以将模板和基本配置与新的 SonarQube 下载进行比较。虽然这是一个手动步骤, 但与以前的操作相比, 它更容易, 因为可以使用 IDE 而不仅仅是从命令行中的 diff 工具进行比较。
这两个步骤都需要后续的手动升级, 我认为这些升级准备活动。
如何在软件开发工作流中构建质量
远见卓识视图, 显示每个测试在运行时的执行时间
假设你是一个希望成长为一家中型科技公司的初创企业--介于30到100工程师之间。招聘是快速发生的, 而且你的代码数量也在快速增长。在较早的阶段, 贵公司专注于证明产品。一切都是规模较小, 你可以循环快速。现在, 随着你的成长, 你有更多的开发者在编写代码和更多的变量的组合。
这是当你注意到产品质量开始恶化, 你不能像你希望的那样快速发布代码。在扩展业务时, 有越来越多的变量需要进行调整, 您可能会忽略更多测试的需要, 并在测试上花费更多的时间。
如果你决定聘请一个 QA 经理, 而后者又带来了一批自动化工程师, 你就可以走出困境。硒测试的覆盖率很高。但随着时间的推移, 事情又开始放慢了。所有的自动化和善意, 你建立了硒覆盖开始打破和失败, 它反复暂停软件工厂。
我们开始的地方
当我加入 Shutterstock 时, 我对公司的自动化测试覆盖率印象深刻。几乎每一个功能的网站上都有测试覆盖率的形式, 硒端对点测试。Shutterstock 有一个开发工作流程的地方通过詹金斯, 将阻止部署到生产, 如果硒测试失败。我喜欢这样;这意味着除非所有的测试都通过了, 否则任何人都不能将任何东西放到生产中。
但不久之后, 我意识到, 我们的公司, 这是每天发布多次, 已经变成了一个公司, 现在被禁止发布多天一次, 主要是因为失败的硒测试。常见的情况是, 测试失败不是因为产品损坏, 而是因为它们很脆弱。
一些事情导致了这一点:
终端端 selenium-based 验收测试成为了每个人都依赖于测试的唯yi形式的自动化测试。许多团队甚至停止编写单元测试。
测试框架是片状的, 是由 QA 团队建立和拥有的。当某件事情失败, 整个软件工厂停止运转时, QA 团队中一小部分三到五人的错误就落在了我们身上, 他们经常被指责为放慢了组织的速度。
工程组织花了很多时间来研究如何构建一个可以扩展的产品, 但是没有足够的注意力去构建一个支持这种产品开发的开发工作流程。
质量完全由 QA 团队拥有。
在我们的核心, 我们有一个 QA 组织, 它没有与组织的其他部分进行扩展。虽然他们拥有自动化所有内容的技能, 但是他们缺乏构建可伸缩的测试框架所需的核心技能。由于这种差距, 他们无法影响组织的其他人认为质量是所有人拥有的东西, 而不仅仅是 QA 团队。为了弥合这一差距, 我们不得不重新考虑我们对 QA 整体的态度。
迈向新的开始
我想完成两个目标: 首先, 重建 Shutterstock 的测试基础架构/框架, 使其更加稳定, 其次, 改变 Shutterstock 的工程文化, 使之成为一个质量不是由测试工程团队拥有的, 而是由每个人来拥有。
我们改变了招聘测试工程师时所期待的核心能力。我们希望我们的测试工程师成为强大的开发人员, 他们知道如何构建 object-oriented 的解决方案, 从而帮助他们创建一个稳定且可扩展的测试框架。我们也希望他们成为有影响力的人, 他们可以推动他们的团队做正确的事情, 而不采取跳过单元测试这样的捷径。一旦我们建立了一个 world-class 测试工程团队, 我们就开始了解如何快速发布, 同时保持一个高品质的产品。
我们知道我们da的问题是脆弱的测试, 所以我们建立了一个叫做 "睿智" 的工具来记录每个测试的通过/失败数据。我们所有的测试都把数据推入睿智, 每次他们作为我们的詹金斯工作流程的一部分运行。然后, 我们在这个数据库之上建立了一个网站, 使数据的挖掘变得容易。我们现在能够监控工作的合格率、个别测试的及格率、常见的失败消息、长的运行测试, 等等。有了这些数据, 我们就可以保持自己和其他人的责任感。我们的一个核心团队受影响的失败的测试认识到, 他们通常的传球率只有20%。(试想一下, 由于这一路障, 软件工厂经常停下来。通过使用远见卓识, 他们能够快速隔离测试的di合格率, 并在这些测试中看到常见的失败消息。团队对测试脚本进行了简单的修复, 以提高其可靠性。
以上信息由专业从事代理商sonarqube教程的华克斯于2025/6/20 6:40:43发布
转载请注明来源:http://www.zhizhuke.cn/qyzx/hksxxkj-2870629355.html
上一条:抚州三股手提绳来电洽谈「多图」