- 发布
- 苏州华克斯信息科技有限公司
- 电话
- 0512-62382981
- 手机
- 13862561363
- 发布时间
- 2022-11-12 01:44:49
SonarSource 的产品和服务被世界各地的客户所使用。所有规模的组织都在使用来自 SonarSource 的产品和服务提高生产率, 降低风险, 终开发更好的软件。SonarQube 是每天使用的 Zitro 游戏审查其 c 和 PHP 代码,吉林sonarqube 中文, 并分配质量改进任务给其工程师。Zitro 游戏生产的xian进的游戏平台预计会不停地运行, 没有故障或错误, 因此软件质量对其业务运营绝dui至关重要。但是制作的宾果软件只是一次还不够。为了保持其作为领xian的视频宾果游戏的地位, Zitro 必须跟上创新的步伐, 这意味着经常发布。由于 Zitro 生产的du博软件, 处理真正的钱, 这些版本必须尽可能接近。保持短期的 Zitro 需要保持竞争力只有当它有一个清晰的, 全mian的和xin的图片的质量影响的变化在一个版本。软件质量-从哪里开始?
当它来检查和提高其软件质量, Zitro 只是不知道从哪里开始。首先, 对软件的当前状态没有一个清晰的描述。这意味着, 即使它想投入资源来提高其软件的整体质量, Zitro 的员工也无法有效地组织他们的改进工作, 因为他们不知道应该关注什么。挣扎, 他们做了唯yi的事情, 他们可以想到的;"我们做了繁琐的, 手动代码审查所有的新代码, 每一个版本," Zitro 研发总监哈维 Albors 说。SonARQUBE 提供了一个关于整体源代码质量的清晰视图
当他们发现 SonarQube 的时候, Zitro 的员工意识到他们已经找到了一个高xiao且负担得起的工具, 每天自动检查所有的 c 和 PHP 代码。Albors 说: "我们仍然在的一些重要部分进行了一些手工代码审查, 但在所有的代码中都没有。现在, "我们只审查 SonarQube 报告。更好的是, 他们能够使用 SonarQube 的问题工作流来管理来自同一接口的这些报告中显示的内容的补救。SonarQube 的好处得到了明确的证明, Zitro 管理层决定将其部署到整个组织。像问题管理系统这样的关键 SonarQube 功能加快了开发团队的采用, SonarQube 的仪表板为组织中的每个人提供了重要信息的整合视图。结果: 显著的节省时间和代码质量的改进
今天, Zitro 使用 SonarQube 分析约25万行代码, 这是划分在17项目, 并由一个由20工程师团队维护。应用程序通过与其 生成服务器的直接集成, 每天进行分析。每天都会对新的 SonarQube 结果进行评审, 并使用问题管理工作流来分配质量改进任务。"我们赢得了所有团队的时间, 提高了我们的源代码质量, 因为机器正在监视我们!Albors 说。
SonarSource
代码质量是一个不断增长的市场, 它是分析师对其大规模采用和大量投资回报的雷达。
介绍麦凯布的圈复杂度长期以来一直是事实上的标准测量方法的控制流的复杂性。它的目的是 "确定软件模块将很难测试或维护 "[1], 但当它准确地计算xiao的测试用例需要完全覆盖的方法, 它不是一个令人满意的测量理解。这是因为具有相等圈复杂度的方法不一定存在同样的困难, 维护, 导致一种感觉,测量 "啼狼" 由 over-valuing 一些结构, 而 under-valuing 其他构造.同时, 圈复杂度不再是全mian的。制定的Fortran 环境在 1976年, 它不包括现代语言结构, 如尝试/捕zhuo,和 lambda。, 因为每个方法都有一个xiao的圈复杂度得分, 它是不可能知道任何具有高聚合圈复杂度的给定类是否一个大的、易于维护的域类, 或一个具有复杂控制流的小类。在类级别之外,代理商sonarqube 中文, 人们普遍承认, 圈复杂度的分数应用程序与它们的代码总计行相关联。换言之, 圈复杂度是在方法级别上很少使用。作为对这些问题的一种补救, 认知复杂性已经被制定来解决现代语言结构, 并产生的价值是有意义的类和应用程序级别。更重要的是, 它背离了基于数学模型, 使其能够产生控制流的评估,中国sonarqube 中文, 对应于程序员的直觉的精神, 或认知的努力, 需要了解这些流动.
SonarQube和JaCoCo的个人测试代码覆盖率
构建部分
这里不需要修改但是,您应该注意Maven Surefire的任何自定义配置,以确保它也适用于我们要创建的配置文件。在春季宠物诊suo的情况下,这是我们正在写的参考POM的相关部分:
lt;建立gt; lt;插件gt;
...
lt;插件gt;
lt;的groupIdgt; org.apache.maven.plugins lt;/的groupIdgt;
lt;artifactId的gt;行家-万无一失-插件lt;/ artifactId的gt;
lt;版本gt; 2.13 lt;/版本gt;
lt;结构gt;
lt;argLinegt; -XX:-UseSplitVerifier lt;/ argLinegt;
lt;包含gt;
lt;包括gt; ** / * Test.java lt;/包括gt;
lt;包括gt; ** / * Tests.java lt;/包括gt;
lt;/包括gt;
lt;排除gt;
lt;排除gt; ** /它/ * IT.java lt;/排除gt;
lt;/排除gt;
lt;/配置gt;
lt;/插件gt;
...
lt;/插件gt; lt;/建造gt;
这种配置告诉Surefire:1)排除执行单元测试的集成测试(Surefire的双插件,Failsafe涵盖了集成测试);和2)禁用字节码验证器,防止类被调试时的运行时错误(即添加mocks或Toplink增强功能时)。
依赖部分
在本节中,不需要进行任何更改。我们只想注意到,如果您的项目已经在利用JaCoCo收集整合测试覆盖率指标,并且明确地指出了本部分中的JaCoCo伪像,那么可以将其留下 - 至今没有确定任何冲突。无论如何,它不应该在这里需要,所以从这个部分删除它可能更安全。
档案部分
所有必需的更改都在本节中。而且它们都非常干净,因为它们都只需要向POM添加一个新的配置文件。此配置文件将为Surefire配置一个特殊侦听器,以确保适当收集每个单独测试用例的覆盖度量。为了保证成功的测试执行,我们将在此保持与POM的构建部分中显示的相同配置。,配置文件将为包含侦听器代码的伪zao添加新的依赖关系。结果是这样的:
lt;轮廓gt;
lt;! - 使用SonarQube和JaCoCo计算每个测试的覆盖率指标
lt;IDgt;覆盖每次测试lt;/ IDgt;
lt;建立gt;
lt;插件gt;
lt;插件gt;
lt;的groupIdgt; org.apache.maven.plugins lt;/的groupIdgt;
lt;artifactId的gt;行家-万无一失-插件lt;/ artifactId的gt;
lt;版本gt; 2.13 lt;/版本gt;
lt;结构gt;
lt;! - 与常规测试执行目标相同的配置 - gt;
由JaCoCo prepare-agent - gt;配置的lt;! - 加argLine参数
lt;argLinegt; $ {argLine} -XX:-UseSplitVerifier lt;/ argLinegt;
lt;包含gt;
lt;包括gt; ** / * Test.java lt;/包括gt;
lt;包括gt; ** / * Tests.java lt;/包括gt;
lt;/包括gt;
lt;排除gt;
lt;排除gt; ** /它/ * IT.java lt;/排除gt;
lt;/排除gt;
lt;! - 每个测试覆盖所需的新配置 - gt;
lt;性能gt;
lt;属性gt;
lt;名称gt;听者lt;/名称gt;
lt;值gt; org.sonar.java.jacoco.JUnitListener lt;/值gt;
lt;/属性gt;
lt;/属性gt;
lt;/配置gt;
lt;/插件gt;
lt;/插件gt;
lt;/建造gt;
lt;依赖性gt;
lt;依赖性gt;
lt;的groupIdgt; org.codehaus.sonar-plugins.java lt;/的groupIdgt;
lt;artifactId的gt;声纳-jacoco-听众lt;/ artifactId的gt;
lt;版本gt; 2.3 lt;/版本gt;
lt;范围gt;测试lt;/范围gt;
lt;/依赖性gt;
lt;/依赖gt;
lt;/简档gt;