编辑:[db:作者] 时间:2024-08-25 06:06:31
作为SonarQube授权互助伙伴,创实持续关注代码安全领域,为中国用户带来环球范围内的精良工具和解决方案,帮助企业实现开拓运营安全一体化。
在本文中,Sonar产品经理Alexandre Gigleux详细解读了Sonar最新提出的性能指标、目前的指标完成进度,以及接下来的紧张任务。
在此,我很自满地宣告Sonar性能剖析指标。一贯以来,当用户谈论到Sonar剖析性能时,会分为两种情形:
寻衅:用户不断考试测验打破极限,报告他们认为应改进的问题案例。满意:由于用户已对要运行数小时且总是产生大量误报结果的SAST工具习以为常,他们对Sonar感到满意。但无论是面对以上何种情形,我们都不知道该如何应对。由于最初我们在开始构建剖析引擎时,脑海中没有明确的性能指标。方向尚不明确,是否达到指标这一命题就不成立。因此,在您奉告我们性能还不足好的时候,我们并不清楚您的这些建议是否可取。
这便是为什么我们终极决定须要建立明确的性能剖析指标:这样我们就不会将自己的产品与其它可能没有相同指标或结果的工具进行大略的比较,也不会主不雅观地、从个人角度去评价剖析“看起来”怎么样。
现在,我们可以明确地奉告您可以从我们的产品中得到些什么,以及在标准化的条件下,剖析项目所须要的韶光。
那么,就让我们看看这些指标是什么,以及这些指标的实现情形。
第一次剖析须要多永劫光?
第一次剖析该当理解为对一个分支的所有文件进行剖析。当您在SonarQube或SonarCloud中加入新项目时,以及创建新分支时,这种情形都会发生。在这种情形下,您可以期待在不到几分钟的韶光内就能看到项目的总体状态,详细几分钟则取决于项目规模:
根据在SonarCloud上的丈量结果,我们的产品在处理M、L和XL类项目时都达标了——这些项目中的95%是在指标韶光范围内完成剖析的。由于开始剖析阶段的韶光花费,XS和S类项目尚未达到哀求。
代码变更剖析须要多永劫光?
代码变更剖析发生常日在以下两种情形下发生:
创建一个pull request后,希望在合并前验证PR质量。直接将文件提交到分支(主分支或其它分支),而未利用pull/merge request机制。在这种环境下,我们自然地期望剖析韶光与变更凑集的规模(添加或更新代码的数量)成正比,而不是像第一次剖析那样须要等待相同的韶光。
在这里,您可以期待在几分钟内看到您的项目、分支或PR更新后的质量关口(Quality Gate,也译作质量门),详细须要花几分钟则取决于代码变动的规模:
到目前为止,我们为实现这些指标做了哪些事情?
我们的新定义:一个项目可以包含多种编程措辞。我们以项目中代码密度最大的措辞来给项目命名,这让将一个特定的项目描述为Java、TypeScript或PHP项目变得很方便。
第一次剖析实行韶光
就Java目而言,我们对其总体剖析性能进行了改进。与SonarQube 9.3比较,SonarQube 9.4的Java剖析速率均匀提速30%。一位测试了该版本的客户表示,他能够在不到18分钟的韶光内剖析一个1M LOC项目。这完备达到了我们的指标(<40分钟),表明我们的产品已达到了良好的剖析效果。
对付Kotlin项目,我们将剖析性能提高了10倍,达到了性能指标。
就C/C++项目而言,从SonarQube 9.5开始,我们默认的剖析是多线程的。在这之前,它是一个可选选项,最新版本中我们将其改成了默认选项。通过此变动,剖析中会分配到更多的CPU,从而更随意马虎达到预期的指标。
代码变更剖析实行韶光
对付Sonar所覆盖的许多措辞,我们不须要从所有文件中网络信息来提高结果质量,这种情形下,只须要剖析pull request涉及到的文件。从2022年5月3日起,这一功能可以从SonarQube 9.3和SonarCloud上得到。如果pull request中包含CSS、HTML、XML、Ruby、Scala、Go、Apex、CloudFormation、Terraform、Swift、PL/SQL、T-SQL、ABAP、VB6、Flex和RPG等代码的变更,则pull request的剖析效率常日会得到一些改进。
对付主体是Java代码的pull request,由于我们不再须要对全体项目级的数据进行剖析,而只针对变动文件实行剖析,以是速率还会再提升8-25%。
总的来说提升了,但是我们还未达到我们代码变更剖析时长的指标。
接下来,我们要做什么?
作为我们的紧张任务,我们希望优化Java项目的pull request剖析韶光。我们将借助存储项目级数据的新缓存机制实现这一点,这将确保我们的剖析结果拥有较高的准确性。为什么首先优化Java?由于Java是Sonar支持的第一种措辞,也是被我们用户利用最多的一种措辞。此外,Sonar的开拓职员利用了大量Java,因此我们能够在发布前轻松创造问题。
接下来,我们将借助同一缓存系统优化分支的代码变动剖析。
当运行稳定后,我们会将其扩展到JS/TS、PHP、Python和COBOL等措辞。
想要体验 SonarQube或试用SonarCloud,请联系SonarQube中国官方授权互助伙伴——创实 ,我们供应SonarQube产品的咨询、发卖、 履行、培训及技能支持做事。
作者简介:
ALEXANDRE GIGLEUX
产品经理
文章来源:https://blog.sonarsource.com/sonars-analysis-performance-targets/
本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除,如需转载请保留原文地址:http://www.baanla.com/lz/zxbj/149761.html
上一篇:四大年夜吃灰电子产品 有钱也不要乱买 最后沦为泡面神器
下一篇:返回列表
Copyright 2005-20203 www.baidu.com 版权所有 | 琼ICP备2023011765号-4 | 统计代码
声明:本站所有内容均只可用于学习参考,信息与图片素材来源于互联网,如内容侵权与违规,请与本站联系,将在三个工作日内处理,联系邮箱:123456789@qq.com