代码质量与安全 | 使用Incredibuild加速Klocwork静态代码分析

Klocwork是一款优秀的静态代码分析和SAST工具,适用于 C、C++、C#、Java、JavaScript、Python和Kotlin,可识别软件安全性、质量和可靠性问题,帮助强制遵守标准。
Incredibuild是一款加速编译工具,为C++代码编译和分析提供强大的分布式处理和独特的构建缓存加速。通过将其与Klocwork相结合,您能够快速分析整个代码库,从而在开发早期识别编码漏洞和错误,并确保编码标准得到实施。
龙智作为DevSecOps研发安全运营一体化解决方案供应商、Perforce授权合作伙伴、Incredibuild合作伙伴,致力于将全球先进工具引入中国市场,帮助大型开发团队缩短开发周期,更好、更快地交付软件。立即联系我们,了解Klocwork与Incredibuild的相关信息及最佳实践。

代码质量与安全 | 使用Incredibuild加速Klocwork静态代码分析_第1张图片

静态代码分析并非一种新工具,而是一种日趋普遍的方法,可以用该方法来确保代码质量以及构建更为优质的应用程序。但众所周知,这并不是最快的过程。随着代码库的不断扩大,这一现象尤为明显——仅2022年,代码库就增长了18%以上,而且许多代码库已经达到了数百万行。

平衡此类对于速度与质量的需求意味着,虽然静态代码分析正日益成为一种标准,但也尤为需要找到使之可行的方法。如何在一天中找到些许时间来确保这一基本过程不会影响您的发布计划?可以通过找到使这一过程更为简单、更为奏效的工具。像Perforce制作的Klocwork这类工具,专门为大规模代码库和复杂开发环境而设计。

即便如此,静态代码分析总是还能更快些。这便是Incredibuild与Klocwork在Windows上完全集成的原因所在——用以确保您可以将静态代码分析完全嵌入到DevOps管道中,而不必放慢开发周期。

携手共进——Klocwork与Incredibuild共同作用的原因

随着越来越多的组织接受DevOps实践和方法,找到简化管道的方法是提高产品质量和加快市场投放时间的关键。这包括从寻找正确的团队结构到最大限度地利用现有的硬件和云资源等。

必须保持随时在线意味着CI/CD管道中的任何瓶颈都会在其他任何地方造成影响。例如,开发中的延迟可能会影响文本和分支管理,从而导致迭代频率降低,减缓反馈周期,并且如果发生错误,则更难确定错误发生的位置。反过来,这也会影响到QA和测试,也就是说可能会漏掉错误,推迟发布,并且可能无法如期完成热修复。

静态代码分析和静态应用安全测试 (SAST) 等工具是该过程的重要组成部分,但更快地做这些工作可以帮助将它们更有效地集成到CI/CD管道中,而不牺牲从流畅的工作流中获得的时间增益。这便是Incredibuild和Klocwork的用武之地。

结合两者可以充分利用所开发组织的计算能力,从而更快处理这些关键任务(同时完成构建)。得益于Incredibuild的虚拟分布式处理,可以处理静态分析和SAST,而无需暂停其他关键开发流程与作业。不必等待事情完成,只需在事情完成时继续工作。

如何开始使用Incredibuild和Klocwork

一旦准备就绪,就没有什么繁重的工作要做。您只需要几个步骤便可开始同时使用这两个平台。首先,请确保您满足以下先决条件:

  • 您已安装Klocwork的有效许可证
  • 您在Klocwork中拥有“访问网络API”权限。因为权限默认设置为根管理员和项目管理员,请您与管理员确认。
  • 确保所有使用Klocwork的计算机上都安装了Incredibuild启动器代理,Klocwork将作为静态代码分析的一部分(同时,仔细检查启动器许可证是否有Klocwork插件)。
  • 如果您在云端使用Incredibuild,请确保它们可以与您的Klocwork许可证服务器进行通信

一旦您确定全部就位,您只需要遵循两个快速步骤:

使用kwinject创建构建规范。您可以使用buildconsole进行分发与加速。

kwinject buildconsole.exe ><”sln path”> /rebuild /cofg=”Debug|Win6 4”

运行集成构建分析。您可以使用Incredibuild的xgConsole命令(语法不会从ibconsole命令中发生更改)进行分发与加速。

xgConsole /profile="C:\Klocwork\Server 21.1\config\xgProfile.xml" /title=<"title name"> /command="kwbuildproject --url http://localhost:8080/ -j [n] -o kwtables -f kwinject.out”

你可能感兴趣的:(静态)