SonarSource
优化质量分析以实现业务价值
复杂性: 代码可见性降低了软件风险
适用于**自动化软件质量2014–2018的预测和2013供应商份额: 一些
ASQ 的增长与持续的采用预计移动, 云和嵌入式, IDC 251643 和
建立软件质量分析策略, 帮助解决三平台复杂性, IDC 253257
主办单位: SonarSource
梅林达-卡罗尔. 卢
2015年1月
简介: 了解质量分析差距的影响
数字世界的转变, 数字转换的影响, 以及对持续性的需求
跨技术平台的部署给 IT 组织带来了巨大的压力, 因为它们
解决动态变化的业务需求。高质量应用的上市时间
变得至关重要, 但提供软件发布和开发新的面向客户的
应用是一个越来越大的挑战。对于大型跨国企业来说, 情况尤其如此。
必须与复杂多变的多式技术网络相抗衡的组织
与遗留系统和资源结合在一起的数千个用户的地理
分布式.
对于 CIO 来说, 目标不仅仅是提高 it 的敏捷性--它是关于如何使用它来成功地
跨 '三平台' 增强业务灵活性、性和客户体验,
范围从移动, 社会系统的参与, 到云, 同时合并大数据
分析.在操作层面上, 这种做法增加了公司的压力,
重组、新和转换软件开发和测试实践。这可以允许
为了地交付具有适当质量、风险、速度和
成本水平。
然而, 尽管质量低劣的软件对客户访问、收入和
商业信誉在这些有影响力的移动和其他三平台环境中, 许多
组织已经陷入了可怜的软件卫生习惯。能见度不足的水平
缺陷的原因及其影响为许多开发者创造了一种文化
他们所创造的缺陷的责任。'在墙上抛出代码' 用于部署仍然是
频繁的, 内脏的问题造成的公司, 部分由迫切的需求立即
这些关键业务环境中的软件交付。然而, 不良的发展途径
即使需要提高代码质量并在周期早期消除缺陷也会发生
急剧增加。
在 IDC 中, 我们一直在跟踪重大业务变项目的成功率
组织在过去的几年里, 和我们的 2014 QA 调查横跨**过200大
企业发现有问题的项目成功率。我们将 '成功' 定义为及时、相关和
个别项目的预算交付。我们的研究表明大约40% 的商业
面向改的软件开发项目未能满足这些要求。和60%
按时交付和预算通常需要事后调整, 以确保
公司的后期限已经达到 (例如,SonarQube服务, 需要在项目中投入多的员工, 或者
©2015 IDC # IDCTS08W 2
项目范围减少)。除了这些预算和及时性挑战, 谎言代码质量
问题.
IDC 的研究显示, 在生产后期发现的缺陷成本指数高
对组织修复比在周期中发现的早 (10–100倍或多,
取决于其他依赖项, 以及在生命周期中发现问题的后期程度)。的
能够发现代码问题, 有共同的访问问题, 并负责修复
这些问题和解决积压成为重要的环境无情
用户体验不佳和功能失败。客户反馈的即时性
用户参与、用户衰减率和应用程序商店评级带来了新的可视级别和
重要的是推动采用常见的代码问题访问上下文, 以便
补救, 以及对安全挑战的可见性。
这些因素与软件项目复杂性的增加相结合。企业采用复杂、
使用内部和外部资源 (如系统) 进行地理分布的开发
集成商 (SIs) 随着各种开发工具的使用而显著增加
(包括开源)、多种语言和敏捷流程。这意味着需要
代码分析, 可以共同访问有关软件问题的信息和定量和
跨不同团队的定性指标**如此巨大。
在这个数字消费化和流动性的时代, 项目变得具挑战性和
管理的关键。为什么?
SonarSource交付管道,
持续的交付和 DevOps 是众所周知的和广泛传播的做法现在。人们普遍认为, 重要的是组建伟大的团队, 首先定义共同的目标, 然后选择和整合适合于给定任务的工具。通常, 它是一个轻量级工具的混搭, 它们集成在一起建立连续的交付管道并支持 DevOps 的计划。在这个博客文章中, 我们放大到了整个管道的一个重要部分, 这就是经常被称为连续检查的学科, 它包括检查代码并在上面注入一个质量门, 并显示在达到质量门后如何上传工件。DevOps 的启用工具包括詹金斯、SonarQube 和 Artifactory。
的用例你已经知道质量不能在事后被注入, 而是从一开始就应该是过程和产品的一部分。作为一种常用的良好做法, 强烈建议您尽检查代码并使结果可见。因为 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部分, 因为我们现在还想添加质量门, 以打破构建。下一阶段正好涵盖了这一点, 请参阅下一片段。管道被暂停, 直到质量门被计算, 特别是 waitForQualityGate 步骤将暂停管道, 直到 SonarQube 分析完成并返回质量门状态。如果遗漏了质量门, 则生成将中断。