代码质量是一个不断增长的市场, 它是分析师对其大规模采用和大量投资回报的雷达。
认知的复杂性提供了一个新的衡量如何硬编码是理解-一个***开发商的直觉正确的。***白皮书本文描述了认知的复杂性, 提出了一种新的度量方法, 以***地测量法的相对理解。在这样做的时候, 它解决了这个领域中圈复杂度的缺点。圈复杂度使用数学模型来评估方法, 对测试所需的工作量进行精que测量, 但不准确地测量需要了解它们的工作量。认知的复杂性打破了使用数学模型评估软件可维护性的实践。它从由圈复杂度所设置的先例开始, 但使用人工判断来评估结构应如何计算, 并决定应将哪些内容添加到整个模型中。这种递归实现有助于分析代码质量以及代码如何随着时间的推移而改进。结果是, 它产生了方法复杂性评分, 使程序员对可维护性的相对评估比以前的模型更公平。
SonarSource
在这些更复杂的环境中, 组织必须做更多的事情。
***竞争环境, 资源很少和/或减少。他们必须弥合 everincreasing
它与业务的新形式的社会参与之间的差距, 并抗衡
随着更多的要求创新的应用程序, 满足业务和
消费者的需求。
企业项目在激烈的***压力下***的水平和率
技术变化要求部门协同工作, 包括业务干系人
和跨 IT、开发、质量和运营的管理人员, 以便在竞争中生存。
正如我们看到的组织转向复杂的采购, 以解决这些业务和
技术需求, 我们看到了对软件分析、自动化和通用过程的需求
通过.对于 IDC 来说, 复杂的采购意味着利用外部服务提供商的资源
(如陆上和近海 SIs), 来自商业、IT、基础设施的内部资源,
承包商, 并使用开源软件 (OSS) 解决方案和组件。
需要建立伙伴关系和使用一系列资源, 要求管理、自动化、
和质量的协调。代码质量的可见性成为关键, 有助于提高
行为, 以产生更好的软件和地图团队的适当类型的项目给
经验水平和执行 (即使机会成为教育团队
更有效地执行)。服务提供商和内部员工都需要 "他们的游戏" 与
关于软件的创建、适当的质量和缺陷的积压。"技术债务" 只能
识别和解决, 如果它是可见的, 可以通过适当的自动化工具启用和
过程策略的采用和分析, 以了解影响。
这一 IDC 技术聚焦将讨论改进软件分析方法的必要性,
缺陷管理、安全和度量, 通过主动可见性来获得业务和 IT 好处。
那些不懂历史的人注定要重蹈覆辙;这句谚语也适用于无效
软件创建、质量和缺陷缓解和解决方法。
不断变化的质量观
随着企业越来越依赖于技术和软件来提供***产品,
CIO 的工作正在转变。预算没有增加, 但业务期望它能够
在高度复杂的环境中比以前更快地交付新的业务价值
提高了对质量的期望。此外, 有一种期望, 它会变得更清楚
新的业务目标, 并将 IT 优先级与之相匹配。一个关键的挑战是如何使
更快地交付更高质量的应用程序, 以满足业务和客户需求。它, 并
cio 必须超越提高 IT 效率以实现业务创新, 并提供
具有持续部署和改进的软件实践的***客户体验。和一个
基本的构建模块是代码分析和管理。
缺乏对代码质量的可见性, 以及导致问题的代码更加明显
和更多的削弱企业现在由于能见度和曝光要求
移动和其他面向客户的应用程序。这已经成为高管们的***问题,
那些在代码创建级别的组织。
开发和提供高质量的软件版本和新的面向客户的应用程序
时间是一个越来越大的挑战, 特别是对于那些必须与复杂的
与遗留系统和资源相结合的现代技术网络。组织必须
解决内部业务的需求-企业应用程序的扩展和可用性
移动/社会/云平台-以及满足客户/消费者对可用性的需求
创新的应用。然而, 如何做到这一点, 而不提供洞察问题, 因为它们是
无意中创建的?
可以做些什么来提高整体软件质量以减少问题和风险, 同时
加快发布周期, 使新的服务和产品更快地投放市场?这
要求对软件漏洞和缺陷进行有效和早期的管理, 以使
主动的质量战略和降低成本。然而, 如何才能减轻现有的不良行为
***hao完成这些目标?
SonarQube和JaCoCo的个人测试代码覆盖率
构建部分
这里不需要修改但是,您应该注意Maven Surefire的任何自定义配置,以确保它也适用于我们要创建的配置文件。在春季宠物诊suo的情况下,这是我们正在写的参考POM的相关部分:
<建立> <插件>
...
<插件>
<的groupId> org.apache.maven.plugins </的groupId>
<artifactId的>行家-万无一失-插件</ artifactId的>
<版本> 2.13 </版本>
<结构>
<argLine> -XX:-UseSplitVerifier </ argLine>
<包含>
<包括> ** / * Test.java </包括>
<包括> ** / * Tests.java </包括>
</包括>
<排除>
<排除> ** /它/ * IT.java </排除>
</排除>
</配置>
</插件>
</插件> </建造>
这种配置告诉Surefire:1)排除执行单元测试的集成测试(Surefire的双插件,Failsafe涵盖了集成测试);和2)禁用字节码验证器,防止类被调试时的运行时错误(即添加mocks或TopLink增强功能时)。
依赖部分
在本节中,不需要进行任何更改。我们只想注意到,如果您的项目已经在利用JaCoCo收集整合测试覆盖率指标,并且明确地指出了本部分中的JaCoCo伪像,那么可以将其留下 - 至今没有确定任何冲突。无论如何,它不应该在这里需要,所以从这个部分删除它可能更安全。SonarQube可以成为源代码质量的协调中心,因为它不需要限于开发人员或技术娴熟的,但可以提供有用的信息广泛项目经理,技术领导,IT,甚至在一个组织内的业务领导可自定义的仪表板。
档案部分
所有必需的更改都在本节中。而且它们都非常干净,因为它们都只需要向POM添加一个新的配置文件。此配置文件将为Surefire配置一个特殊侦听器,以确保适当收集每个单独测试用例的覆盖度量。为了保证成功的测试执行,我们将在此保持与POM的构建部分中显示的相同配置。***,配置文件将为包含侦听器代码的伪zao添加新的依赖关系。更重要的是,它背离了基于数学模型,使其能够产生控制流的评估,对应于程序员的直觉的精神,或认知的努力,需要了解这些流动。结果是这样的:
<轮廓>
<! - 使用SonarQube和JaCoCo计算每个测试的覆盖率指标
<ID>覆盖每次测试</ ID>
<建立>
<! - 与常规测试执行目标相同的配置 - >
由JaCoCo prepare-agent - >配置的<! - 加argLine参数
<argLine> $ {argLine} -XX:-UseSplitVerifier </ argLine>
<! - 每个测试覆盖所需的新配置 - >
<性能>
<属性>
<名称>听者</名称>
<值> org.sonar.java.jacoco.JUnitListener </值>
</属性>
</建造>
<依赖性>
<的groupId> org.codehaus.sonar-plugins.java </的groupId>
<artifactId的>声纳-jacoco-听众</ artifactId的>
<版本> 2.3 </版本>
<范围>测试</范围>
</依赖性>
</依赖>
</简档>
版权所有©2024 天助网