• 九大顶级静态代码分析工具 辉


    https://zhuanlan.zhihu.com/p/448512219

    C++、DevOps、DevSecOps、敏捷开发、速度和左移策略,这些话题总是说不完道不尽,但这些也都与静态代码分析工具息息相关。这样看来,静态代码分析的前景不容忽视。
    静态代码分析在自动化、安全性和速度方面(至少对比手动检查的速度)的价值是有目共睹的。随着代码膨胀趋势到来,庞大代码库(C++,people,C++)的问题更值得注意。
    尽管如此,有些人还是觉得静态代码离热门技术相去甚远。事实上,静态代码分析工具的数量已经开始发展,其中不乏一些 C++ 专用工具。但很多开发者还是将其视为“锦上添花”东西,是奢侈品,而不是必须品。诚然,在整个代码库上运行完整的静态代码分析耗时较长,这也是阻碍静态代码分析的重要因素。
    然而,越来越多的开发人员开始意识到,静态代码分析有助于提高产品质量、安全性,甚至缩短上市时间。数据不会说谎,静态代码分析的市场已呈增长趋势。据 MarketWatch 调查,2019 全球静态代码分析软件市场规模为 6 亿 4320 万美元,预计到 2026 年底将达到 17 亿 3940 万美元。这个惊人的增长趋势,也督促着我们赶快去了解顶级 C++ 静态代码分析工具。所以,让我们直入正题。

    1. Klocwork (Perforce)


    谈到 C++ 静态代码分析工具,首当其冲的必然是 Perforce 公司的 Klocwork 工具。在静态代码分析领域,Klocwork 算得上是领头羊,这可能也与其专攻大型代码库的优势相关。Klocwork 有 1000 多个检查器,对症不同种类代码缺陷,同时用户可定制检查方案。此外,假正例(false positives)与假负例(false negatives)等代码缺陷筛查也是其优势功能(很多工具目前无法做到)。除此之外,Klocwork 可提供差异分析,这个功能并不常见。因此,用户可以大幅节省新代码或修改代码的分析时间。Klocwork 不仅是一个静态代码分析工具,同时也是一个 SAST(静态应用程序安全测试工具),几乎全面覆盖了安全性能方面。此外,它还集成了许多 IDE 和 CI/CD 工具。最关键的是,Klocwork 还与 Incredbuild 深度集成,全马力加速代码分析


    2. Cppcheck

     

    Cppcheck 是另一个热门的静态代码分析工具,集开源、免费、跨平台且专用于C 和 C++ 的优势于一身。Cppcheck 最大的特点是易用性,操作简单为它吸引了一大批用户。使用 Cppcheck 时,用户无需做任何调整或修改,这也是初学者爱用 Cppcheck 的主要原因。另外,Cppcheck 的假正率(false positives)较低,这也是这个工具的另一优势。


    3. CppDepend (CoderGears)


    CppDepend 是一个商业的 C++ 静态代码分析工具。有别于其他工具,CppDepend 专注于分析而不是纠错,同时搭建可视化代码库体系结构(例如,正确分层、依赖关系),因此经常作为其他静态代码分析工具的补充。CppDepend 的依赖关系图、趋势监控(监控构建变化)都是很值得深入研究的独特功能。与 Klocwork 一样,CppDepend 也支持用户自定义规则。


    4. Parasoft C/C++test


    Parasoft C/C++test 是流行的 C/C++ 商业测试工具,其中包括静态代码分析工具。Parasoft C/C++test 主要面向企业和嵌入式应用程序(出于安全原因,这些行业通常需要获得静态代码分析工具),以及动态代码分析、单元测试、代码覆盖、运行时分析等功能。在静态代码分析方面,Parasoft 工具的独特之处在其丰富的技术和规则,数量高达 2500 条。此外,Parasoft 还提供认证套件(Qualification Kit)和功能安全认证。不过,Parasoft 真正的价值在于全面性,其代码分析、检测功覆盖了整个周期,包括:分析代码、确定结果优先级和管理结果(包括将结果分配给团队成员)。最近,Parasoft 宣布支持 IAR Systems 针对 Linux for Arm 的构建工具,该工具可帮助开发人员在 Linux 服务器上配置快速、可扩展的 CI/CD 管道。


    5. PVS Studio


    顶级静态代码分析工具榜单,PVS Studio 必须榜上有名。PVS Studio 作为一个商业工具,专长是深度检测,挖掘一般注意不到的隐藏 bug,如打字错误、复制粘贴错误。此外,PVS Studio 还与流行的 CI 工具集成,如 Jenkins、TeamCity、Azure DevOps 等。SonarQube 也在其集成列表之内,SonarQube 是一种与静态代码分析工具很类似工具,但它更偏向于检测代码方面。PVS Studio 的另一个独特优势在于其文档内容,包含了超过 700 页的海量信息。如想进一步了解 PVS Studio 与 Incredibuild 的集成内容,请阅读这篇博客


    6. Coverity (Synopsys)


    Coverity 静态分析名气不小。Coverity 主要用于在编写代码时查找错误和弱点,为开发者节省时间,也避免了后续的麻烦。此外,Coverity 还有提供了一个免费的云服务,Coverity Scan,主要针对开源社区。这个功能以准确性、全面性著称,其代码分析较同类工具更为深入,检查器的开发也建立在对 100 多亿行代码的深入分析基础上。


    7. Polyspace (MathWorks)


    Polyspace 是一个静态分析工具,可识别、修复或挖掘潜在的运行时错误(如:除以零),并检查源代码是否遵循 MISRA C、MISRA C++ 和 JSF++ 等代码标准。此外,Polyspace 还可以将必须手动审查的未经验证代码突出显示。其广泛用于嵌入式软件领域,尤其是安全性能至上的交通运输领域,如汽车、航空航天和铁路运输领域。


    8. Flawfinder


    Flawfinder 是由安全专家 David A. Wheeler 开发的免费开源工具。正如其品牌名称代表的含义,Flawfinder 专注定位安全缺陷,并按风险级别排序(风险最高者排在第一位)。Flawfinder 使用直接、简单和快速,备受初学者喜爱。


    9. Helix QAC (Perforce)


    Helix QAC 是 Perforce 针对 C 、C++ 开发的另一个出色的代码分析工具,在“严格管制和安全至上行业”中很受欢迎,例如汽车行业。Helix QAC 自动强制执行编码标准,如 MISRA®,以确保代码符合要求。


    正确使用工具
    以上的任何一种工具都已足够我们进行代码分析,不过,结合几种工具,取长补短也未尝不可。通过组合各种静态代码分析工具,将故障一网打尽,这才是我们的目标。不过,选择一个还是多个工具也各有优劣,因为我们可能会收到相互冲突的信息,同时误报率也会上升。事实上,研究表明,有时单个工具的性能优于最佳工具组合。不过,这也不能否定工具组合的价值。因地制宜,因时制宜,建议大家多进行尝试,看看哪种方式最适合你的环境。
    另外,如果你正在考虑代码分析工具,并且想知道哪个(或哪几个)工具最适合,请记得上述讨论的性能问题。静态代码分析,在大多数情况下需要花费大量的时间成本。所以,不难理解,许多开发人员完全跳过了代码分析这一步,或者很少进行代码分析。毕竟,高昂的时间成本会阻碍敏捷开发。


    不过在 Incredibuild,我们非常熟悉静态代码分析工具的性能(以及动态代码分析)。为什么?不是因为我们只喜欢静态代码分析工具,也不是因为我们经常使用,而是我们可以对其进行全马力加速,让代码分析更加快速。在加快开发速度的过程中,代码分析工具也能一并使用。上面提到的让开发者望而却步的时间问题,Incredibuild 可以圆满解决,同时也避免了开发人员耗费周末时光进行代码分析的难题(因为运行代码分析可能需要 20 个小时)。总之,Incredibuild 让时间不再是障碍。因此,最佳组合必然是 Incredibuild + 静态代码分析工具。

    编辑于 2021-12-28 11:22
  • 相关阅读:
    C# 单点登录
    长度12的数组,要求对数据分为3组,每组数据对应位置的数字为前几位的和,并返回12位数组
    react项目初始化
    vue 过滤器的使用(解决forEach遇到的问题)
    nuxt中less使用
    vue项目less 使用
    Webpack中的sourceMap配置
    webpack 同一文件打包两次生成两个文件
    webpack---图片打包前和打包后名称一致的配置
    The computed property "userName" is already defined in data.
  • 原文地址:https://www.cnblogs.com/dhcn/p/16771890.html
Copyright © 2020-2023  润新知