SonarSource简介
我们为整个开发组织增添了价值。无论您在开发组织中的角色是什么, SonarSource 解决方案都增加了价值, 因为我们有 cutting-edge 的功能, 您需要在您的软件组合中***da限度地提高质量和管理风险。为开发
软件开发人员***终负责代码质量。代码质量是所谓的非功能性需求的一部分, 因此是开发人员的直接责任。但一旦一个组织越过在开发项目和用户的数量方面,需要移动到商业企业解决方案。因为代码质量不是应该推迟到以后进行的, 所以我们的解决方案在开发过程的每一步都提供了反馈, 从 IDE 到发布, 包括任何中间升级。这使开发人员能够对代码质量做出早期和经过教育的决策, 使他们能够更好地完成工作并提供更好的软件。开发devops为devops
DevOps 团队需要确保软件建立在正确的道路上。DevOps 队有很多责任。其中包括支持开发过程、自动化测试、确保质量、提高生产率以及***终启用连续部署。制定的Fortran环境在1976年,它不包括现代语言结构,如尝试/捕zhuo,和lambda。良好的代码质量是实现所有这些目标的必要条件, 虽然不是充分的条件。我们的解决方案提供了一个代码质量的收费门, 可以添加在任何建设/测试/部署步骤。这使 devOps 团队能够自动执行一组质量标准, 从而确保组织提供更好的软件。为高管
SonarSource 解决方案降低了风险并提高了团队生产率。管理人员需要能够安全地操作软件, 并以成本为投资回报辩解。它将支持所有的内置SonarSource插件,但没有第三方的。我们的解决方案向执行官们一目了然地展示了他们面临的操作风险以及缓解的成本。它还有现成的功能, 可以系统地改进可维护性, 从而提高开发团队的长期生产率。这使管理人员能够确保其组织提供更好的软件, 并以***jia成本使用风险控制方法。
SonarSource交付管道,
持续的交付和 DevOps 是众所周知的和广泛传播的做法现在。人们普遍认为, 重要的是组建伟大的团队, 首先定义共同的目标, 然后选择和整合***适合于给定任务的工具。声纳覆盖7段代码质量体系结构和设计单元测试重复代码潜在bug复杂代码编码标准评论SonarQube接收文件作为输入,并分析他们连同障碍。通常, 它是一个轻量级工具的混搭, 它们集成在一起建立连续的交付管道并支持 DevOps 的计划。在这个博客文章中, 我们放大到了整个管道的一个重要部分, 这就是经常被称为连续检查的学科, 它包括检查代码并在上面注入一个质量门, 并显示在达到质量门后如何上传工件。DevOps 的启用工具包括詹金斯、SonarQube 和 Artifactory。
的用例你已经知道质量不能在事后被注入, 而是从一开始就应该是过程和产品的一部分。作为一种常用的良好做法, 强烈建议您尽快检查代码并使结果可见。现在,当使用cobol或PLI编辑器打开绑定子项目中的cobol或PLI文件时,将在文件中标记任何违反在SonarQubeproject中设置的规则之一的代码,并通过悬停帮助来显示解释。因为 SonarQube 是一个很好的选择。但 SonarQube 不只是运行在任何孤立的岛屿, 它是集成在一个输送管道。作为管道的一部分, 代码被检查, 并且仅当代码根据定义的要求是好的, 换句话说: 它满足质量门, 被建立的工件被上传到二进制存储库管理器。
让我们考虑下面的场景。其中一个繁忙的开发人员必须修复代码, 并检查对中央版本控制系统的更改。通过提高所有利益相关者的***度生命周期,连续检测使企业能够接受代码质量whole-heartedly。白天很长, 晚上很短, 而且对所有团队的承诺, 开发人员没有检查本地沙箱中代码的质量。幸运的是, 有构建引擎詹金斯作为一个单一的真理点, 实现交付管道与其本地管道功能, 并作为一个方便的巧合 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 分析完成并返回质量门状态。如果遗漏了质量门, 则生成将中断。
SonarSource
通过上述命令成功分析项目将导致以下输出到控制台或日志文件:
SonarQube Runner 2.3
Java 1.7.0_25 Oracle Corporation(64位)
Mac OS X 10.8.5 x86_64
INFO:Runner配置文件:/opt/sonar-runner-2.3/conf/sonar-runner.properties
信息:项目配置文件:/Users/manisarkar/bn_projects/TimelineJS/sonar-project.properties
INFO:默认语言环境:“en_US”,源代码编码:“UTF-8”
信息:工作目录:/Users/manisarkar/bn_projects/TimelineJS/.sonar
信息:SonarQube服务器3.7
14:11:20.927 INFO - 加载批量设置
。
14:11:38.290 INFO - ANALYSIS SUCCESSFUL,你可以浏览http:// localhost:9000 / dashboard / index / TimelineJS
14:11:38.292 INFO - 执行工作后类org.sonar.issuesreport.ReportJob
14:11:38.293 INFO - 执行岗位职责类org.sonar.plugins.core.issue.notification.SendIssueNotificati***Po的sdtJob
14:11:38.314 INFO - 执行工作后类org.sonar.plugins.core.batch.IndexProjectPo的stJob
14:11:38.356 INFO - 执行工作后类org.sonar.plugins.dbcleaner.ProjectPurgePo的stJob
14:11:38.365 INFO - - >在2013-08-19和2013-09-15之间每天保留一张快照
14:11:38.365 INFO - - >在2012-09-17和2013-08-19之间每周保留一个快照
14:11:38.365 INFO - - >在2008-09-22和2012-09-17之间每月保留一个快照
14:11:38.365 INFO - - >删除之前的数据:2008-09-22
14:11:38.368 INFO - - > Clean TimelineJS [id = 151]
14:11:38.372信息 - 信息:----------------------------------------- -------------------------------
信息:执行成功
信息:------------------------------------------------ ------------------------
总时间:19.099s
***终内存:14M / 502M
以下是几个链接,以示例sonar-project.properties文件来帮助创建新的,即非Maven Java项目的Sonar设置[05]和SonarQube Runner [06]分析。
注意:SonarQube Runner希望SonarQube在指ding端口上运行,否则会抛出错误,例如ERROR:Sonar server http:// localhost:9000无法访问。客户反馈的即时性用户参与、用户衰减率和应用程序商店评级带来了新的可视级别和重要的是推动采用常见的代码问题访问上下文,以便快速补救,以及对安全挑战的可见性。这当然可以通过配置文件进行更改(参见上一篇文章[01])。
SonarQube组件
一旦构建完成并成功,可以在仪表板中找到新的或更新的项目。钻入项目将带来一个屏幕,载入重要指标和分析项目的各个方面:
(以上是示例应用程序的屏幕截图)
令人感兴趣的主要重要组成部分是质量指标,复杂因素,复杂性(左下),测试覆盖率指标(单位测试覆盖率和单位测试成功率)。可能安全违规。 Package Tangle Index and Dependencies to cut,绝dui是方便的,以保持清洁的包和松散耦合的依赖关系。在类级别之外,人们普遍承认,圈复杂度的分数应用程序与它们的代码总计行相关联。同样的说法,LCOM4(方法中缺少凝聚力 - 降***值越好),复杂性也揭示了你的类,方法和功能的松散耦合 - 它也是在文件级别和整体级别给出全图。所有这些组件都是软件质量的良好指标,至少如果不是软件工艺 - 底层代码写在质量上有多好?或者它可以被看作是 - 仍然是充足的改进和重构的房间。
热点视图现在进一步分析了分析的其他一些重要方面,并突出显示需要更多关注的领域或者一个更多的问题在其顶点附近 - 要么超越***da允许限制,要么需要更多的抛光才能满足要求。
(以上是在nemo.sonarqube.org网站上发布的JDK7的截图)
我非常喜欢下面的设计组件,它可以很好地分解包装依赖关系并强调依赖循环。它是中大型项目中更复杂的事情之一,通常可能会阻碍模块化。
版权所有©2024 天助网