sonarqube,loadrunner,fortify
苏州华克斯信息科技有限公司
联系人:华克斯
电话:0512-62382981
手机:13862561363
主营:sonarqube,loadrunner,fortify
地址:苏州工业园区新平街388号
sonarsource简介
我们建立了一个 商品 解决方案来管理代码。对于cio来说,目标不仅仅是提高it的敏捷性--它是关于如何使用它来成功地跨第三平台增强业务灵活性、-性和客户体验,范围从移动,社会系统的参与,到云,同时合并大数据分析。要做到这一点, 提供hao的产品是不够的。产品也必须与整个生态系统在开发过程中发挥-的作用, 否则它们将-不会被使用 (至少在我们所期望的规模上)。正是基于这一点, 我们建立了 sonarqube 和 sonarlint。与生成系统
sonarqube 与标准构建系统紧密集成, 提供零配置方法。客户反馈的即时性用户参与、用户衰减率和应用程序商店评级带来了新的可视级别和重要的是推动采用常见的代码问题访问上下文,以便快速补救,以及对安全挑战的可见性。通过与liu行的构建系统 (如 maven、msbuild、gradle 和 ant) 集成, 我们提供了一种快速的扫描项目的方法, 很少或-没有配置。但这并不是唯yi的好处: 这种集成也意味着这种分析 配置 将始终是xin的, 因为它是用来构建项目的, 因此在长期运行过程中保持平稳。生成系统ci 引擎与ci 引擎
sonarqube 集成了liu行的连续集成引擎, 如詹金斯和 tfs。sonarqube可以成为源代码的协调中心,因为它不需要限于开发人员或技术娴熟的,但可以提供有用的信息广泛项目经理,技术-,it,甚至在一个组织内的业务-可自定义的仪表板。sonarqube 与构建系统的集成加上简单的命令分析线机制, 意味着 sonarqube 已经很容易地与 ci 引擎集成。但是, 我们已经更进一步地提供了额外的集成与 ci 引擎, 如詹金斯和 tfs 通过启用一键式体验集成 sonarqube 扫描到构建。与ide
开发人员在他们喜欢的 ide 中获得代码的反馈。sonarlint 为开发人员提供了在 ide 中直接对代码的 real-time 反馈, -显示了开发人员类型的问题, 以便将重点放在代码上。ide公司系统与企业系统
作为企业产品, sonarqube 可以很容易地与现有系统集成, 例如授权和身份验证。?经理/董事可以自定义和使用sonarqube来衡量各个组-服务提供商可以为每个客户自定义仪表板组织,他们正在努力解决不同种类的需求和标准。sonarqube 带有内置功能, 可与常用的安全系统 (如 active directory、ldap、oauth 等) 集成。身份验证以及授权可以委派给这些系统。它还可以集成到大多数其他系统, 这得益于它-的 api。与连续部署
sonarqube 提供了一个简单的工具, 以集成到管道。传统的代码控制方法涉及so-called的准时审核或门,这是对源代码的定期审核。sonarqube 提供了在连续交付过程的任何步骤中, 将代码验证 (称为门) 挂钩的能力。这使您能够在代码是否已通过您的预定义的代码标准集的基础上进行升级, 从而自动化了升级审批过程。
sonarsource 的产品和服务被各地的客户所使用。所有规模的组织都在使用来自 sonarsource 的产品和服务提高生产率, 降低风险, 终开发-的软件。但是,目前在sonarqube内部,单独的分支被视为单独的项目。silverpeas 已经能够实现新的功能和提高产品性能, 这已导致赢得越来越多的客户。silverpeas 是协作知识和内容管理的平台。写在爪哇, silverpeas 出生于 1999年, 在-时代的 j2ee。这是一个时代之前的框架, 当英雄编码没有测试或文件。结果是一个工作产品的支持下的混乱的定制框架, 是基于-的想法, 但执行不-。随着时间的推移, 由于在产品的早期就做出了短视的设计决策, 而且由于对其全球体系结构没有明确的愿景, 因此发展和维护代码变得越来越困难。技术- = 责任
这种情况使我们很难跟上-的步伐, 保持市场的竞争力。使问题复杂化的是, 执行基本维护和实施新功能的高昂成本使得很难获得新客户。在类级别之外,人们普遍承认,圈复杂度的分数应用程序与它们的代码总计行相关联。技术-代表了一个太大的负债。够了在 2009年, silverpeas 团队作出了一个激烈的决定: 现在是时候, 以现代化的架构和提高 silverpeas 的代码。但他们需要确切地知道如何, 什么, 以及在哪里重构之前, 他们可以继续。我们需要一个工具来支持我们的改变, silverpeas 软件-米格尔 moquillon 说。sonarqube (当时的声纳) 被选中来帮助我们获得正确的-, 这些问题。通过它的分析工具和它的统一和可定制的界面, 我们有信息, 以确定我们必须执行的任务, 以减少技术-和提高代码的。这是我们的 gps 在- silverpeas 的道路上。sonarqube 保持技术-控制
silverpeas 团队在 silverpeas 的现代化过程中选择了 sonarqube 这一关键角色, 部分原因是它是开源的, 就像 silverpeas 一样, 易于扩展, 但 sonarqube 也提供了一些功能 moquillon 说, 团队发现引人注目的:统一和集中的仪表板一个统一和集中的仪表板, 其中呈现代码的主要指标: 一目了然是什么出错了, 什么是改进了, 很容易看到。简单的导航--一种简单的方法来导航到相关代码的不同指标: 很容易找到需要操作的代码部分.-的报告-在时间的指标演变的迹象: 我们可以估计我们的代码改进的努力。这些公司成功地使用了连续检测模型来管理项目的内部软件所有大小。-的软件已导致越来越多的客户赢得
sonarsource 的解决方案有助于 silverpeas 的成功, 通过对关键问题提供持续和快速的反馈以及如何解决它们的建议。工作从坚实基地它的代码改进给它, silverpeas 团队已经能够实现新的功能, 并提高产品的鲁棒性和性能, 这已导致赢得越来越多的客户。今天, silverpeas 团队致力于将其软件保持在 sonarqube 的轨道上。moqillon 说, silverpeas 团队对 sonarqube 有信心, 因为 这是一个开源项目, 如 silverpeas, 因此, 我们是-其演变和。他赞扬 sonarqube 的定期发布时间表、易用性、易于安装以及与现有开发基础结构 (如连续集成服务器詹金斯) 和构建系统 maven 等集成的易用性。现在, sonarqube 分析运行每晚 silverpeas 的35.1万行代码, 由詹金斯触发的后期生成行动。开发人员和经理定期检查结果, 并采取行动解决问题的集体努力, 以维护和进一步提高 silverpeas 的软件。提高:sonarqube可以作为一个-分析员进行操作,并且可以对代码的七部分进行通知。
如何在软件开发工作流中构建
远见卓识视图, 显示每个测试在运行时的执行时间
假设你是一个希望成长为一家中型科技公司的初创企业--介于30到100-之间。招聘是快速发生的, 而且你的代码数量也在快速增长。在较早的阶段, 贵公司-于证明产品。一切都是规模较小, 你可以循环快速。现在, 随着你的成长, 你有更多的-在编写代码和更多的变量的组合。有效地定义和增加需求:sonarqube有一套预先定义的标准,使开发人员和软件管理人员能够立即了解应用程序的。
这是当你注意到产品开始恶化, 你不能像你希望的那样快速发布代码。在扩展业务时, 有越来越多的变量需要进行调整, 您可能会忽略更多测试的需要, 并在测试上花费更多的时间。
如果你决定聘请一个 qa 经理, 而后者又带来了一批自动化-, 你就可以走出困境。硒测试的覆盖率-。但随着时间的推移, 事情又开始放慢了。所有的自动化和善意, 你建立了硒覆盖开始-和失败, 它反复暂停软件工厂。
我们开始的地方
当我加入 shutterstock 时, 我对公司的自动化测试覆盖率印象深刻。几乎每一个功能的网站上都有测试覆盖率的形式, 硒端对点测试。shutterstock 有一个开发工作流程的地方通过詹金斯, 将阻止部署到生产, 如果硒测试失败。我喜欢这样;这意味着除非所有的测试都通过了, 否则任何人都不能将任何东西放到生产中。我们不想合并一个功能分支,如果它会降低项目的,因此我们-希望了解分支支持在sonarqube-如何改进。
但不久之后, 我意识到, 我们的公司, 这是每天发布多次, 已经变成了一个公司, 现在被禁止发布多天一次, 主要是因为失败的硒测试。常见的情况是, 测试失败不是因为产品损坏, 而是因为它们很脆弱。
一些事情导致了这一点:
终端端 selenium-based 验收测试成为了每个人都依赖于测试的唯yi形式的自动化测试。许多团队甚至停止编写单元测试。
测试框架是片状的, 是由 qa 团队建立和拥有的。当某件事情失败, 整个软件工厂停止运转时, qa 团队中一小部分三到五人的错误就落在了我们身上, 他们经常被指责为放慢了组织的速度。
工程组织花了很多时间来研究如何构建一个可以扩展的产品, 但是没有足够的注意力去构建一个支持这种产品开发的开发工作流程。
完全由 qa 团队拥有。
在我们的-, 我们有一个 qa 组织, 它没有与组织的其他部分进行扩展。虽然他们拥有自动化所有内容的技能, 但是他们缺乏构建可伸缩的测试框架所需的-技能。由于这种差距, 他们无法影响组织的其他人认为是-拥有的东西, 而不仅仅是 qa 团队。为了弥合这一差距, 我们不得不重新考虑我们对 qa 整体的态度。虽然sonarqube可以在战shu上用于-审计,但它可以更具-地利用作为一个共享的,共同的信息来源的分析正如刚才所描述的,以帮助支持代码的持续改进策略。
迈向新的开始
我想完成两个目标: 首先, 重建 shutterstock 的测试基础架构/框架, 使其稳定, 其次, 改变 shutterstock 的工程文化, 使之成为一个不是由测试工程团队拥有的, 而是由每个人来拥有。
我们改变了招聘测试-时所期待的-能力。我们希望我们的测试-成为-的开发人员, 他们知道如何构建 object-oriented 的解决方案, 从而帮助他们创建一个稳定且可扩展的测试框架。我们也希望他们成为有影响力的人, 他们可以推动他们的团队做正确的事情, 而不采取跳过单元测试这样的捷径。一旦我们建立了一个 world-class 测试工程团队, 我们就开始了解如何快速发布, 同时保持一个-的产品。制定的fortran环境在1976年,它不包括现代语言结构,如尝试/捕zhuo,和lambda。
我们知道我们da的问题是脆弱的测试, 所以我们建立了一个叫做 睿智 的工具来记录每个测试的通过/失败数据。我们所有的测试都把数据推入睿智, 每次他们作为我们的詹金斯工作流程的一部分运行。然后, 我们在这个数据库之上建立了一个网站, 使数据的挖掘变得容易。我们现在能够监控工作的合格率、个别测试的及格率、常见的失败消息、长的运行测试, 等等。有了这些数据, 我们就可以保持自己和其他人的责任感。我们的一个-团队受影响的失败的测试认识到, 他们通常的传球率只有20%。(试想一下, 由于这一路障, 软件工厂经常停下来。通过使用远见卓识, 他们能够快速隔离测试的di合格率, 并在这些测试中看到常见的失败消息。在墙上抛出代码用于部署仍然是频繁的,内脏的问题造成的公司,部分由迫切的需求立即这些关键业务环境中的软件交付。团队对测试-进行了简单的修复, 以提高其-性。
sonarqube和jacoco的个人测试代码覆盖率
构建部分
这里不需要修改但是,您应该注意maven surefire的任何自定义配置,以-它也适用于我们要创建的配置文件。在春季宠物诊suo的情况下,这是我们正在写的参考pom的相关部分:
<建立>; <插件>;
...
<插件>;
<的groupid>; org.apache.maven.plugins 的groupid>;
<版本>; 2.13 版本>;
<结构>;
<包含>;
<包括>; ** / * test.java 包括>;
<包括>; ** / * tests.java 包括>;
包括>;
<排除>;
<排除>; ** /它/ * it.java 排除>;
排除>;
配置>;
插件>;
插件>; 建造>;
这种配置告诉surefire:1排除执行单元测试的集成测试surefire的双插件,failsafe涵盖了集成测试;和2禁用字节码验证器,防止类被调试时的运行时错误即添加mocks或toplink增强功能时。
依赖部分
在本节中,不需要进行任何更改。我们只想注意到,如果您的项目已经在利用jacoco收集整合测试覆盖率指标,并且明确地-了本部分中的jacoco伪像,那么可以将其留下 - 至今没有确定任何冲突。无论如何,它不应该在这里需要,所以从这个部分删除它可能更安全。sonarqube集成的工具,如findbugs,checkstyle,pmd,fxcop的,c的p的p的check出of-the-box,或提供plug-ins。
档案部分
所有必需的更改都在本节中。而且它们都非常干净,因为它们都只需要向pom添加一个新的配置文件。此配置文件将为surefire配置一个特殊-,以-适当收集每个单独测-例的覆盖度量。为了-成功的测试执行,我们将在此保持与pom的构建部分中显示的相同配置。-,配置文件将为包含-代码的伪zao添加新的依赖关系。它然后介绍了连续检查范式,并说明了它如何解决这些挑战,支持数以千计的企业提高软件。结果是这样的:
<轮廓>;
<! - 使用sonarqube和jacoco计算每个测试的覆盖率指标
<建立>;
<! - 与常规测试执行目标相同的配置 - >;
由jacoco prepare-agent - >;配置的<! - 加argline参数
<! - 每个测试覆盖所需的新配置 - >;
<性能>;
<属性>;
<名称>;听者名称>;
<值>; org.sonar.java.jacoco.junitlistener 值>;
属性>;
建造>;
<依赖性>;
<的groupid>; org.codehaus.sonar-plugins.java 的groupid>;
<版本>; 2.3 版本>;
<范围>;测试范围>;
依赖性>;
依赖>;
简档>;