• 静态代码扫描工具简介


    介绍一些常用的静态代码扫描工具,由于我也是才使用,可能了解的不全面。另外,以下我说明的代码是使用C语言编写的。

    1 Flawfinder

    简介:在源代码中查找潜在的安全缺陷的软件。

    下载地址:Flawfinder Home Page (dwheeler.com)

    image-20210427112623331

    1)运行环境:Linux,如果要在Windows下使用需要使用Cygwin,Cygwin官网:https://cygwin.com/index.html。

    2)使用方式:这里给出最简单的使用方式,其余参数请参考说明文档。

    下载之后,直接解压,然后直接运行:

    ./flawfinder 代码所在目录
    

    image-20210427113628884

    也可以使用重定向符将结果输出到一个log中。

    $ ./flawfinder ~/My_Cli/ >check.log
    

    3)输出结果

    在输出结果中,有检查的统计:

    image-20210427114427222

    总共检查了3771行代码,用时0.07秒,代码缺陷一共分为6个等级,0最低,5最高。

    Hits@level: 表示各个缺陷等级检测出的问题个数。

    image-20210427133154935

    每个缺陷都有一个含义说明,以及对应的编码,编码的含义可以在帮助文档中查看。

    image-20210427133345538

    image-20210427133434099

    4)注释不检测

    如果有些代码缺陷是Flawfinder误报的,我们希望不检查这个缺陷,可使用以下两种方式在代码中注释,注释之后将不会检查这个缺陷。

    image-20210427133736832

    2 cppcheck

    1. 简介

    Cppcheck是一种代码缺陷静态检查工具。不同于编译器以及其它分析工具,cppcheck只检查编译器检

    查不出来的bug,不检查语法错误。Cppcheck将软件缺陷从静态源代码的角度划分为12个检查类,分别

    给予检测和定位,并赋予8种不同的级别,分别为none,error,warning,style,performance,

    portability,information,debug。

    下载地址:Cppcheck - A tool for static C/C++ code analysis

    2)异常说明

    各种异常的说明:

    img:当代码被执行时,会有一些错误的行为(如:未定义行为、泄露);

    img:当代码执行时,可能会有未定义的行为;

    img:可能的错误,建议改为更健壮的写法,例如:未使用的代码/变量/函数、总是为真/假、运算符优先级。

    img:使代码运行更快的建议。这些建议仅基于一些通用知识。通过修复这些差异,不确定会得到明显的速度提升。

    img:可移植性警告。例如,定义的方式,64位的可移植性等。

    img:配置问题,如果你想得到这样的输出,那就没问题,但需要更改cppcheck的配置。

    3)使用方式

    打开软件,点击”Analyze“,然后点击"目录",选择我们需要检查的代码目录即可。

    image-20210427134031898

    可以通过勾选下图中的图标进行查看error、warning、style等消息类型

    img

    4)查看结果

    点击“查看”,选择“统计”,可看到统计结果。点击“全部展开”,可看到每个文件的扫描结果。

    image-20210427134445237

    也可选择“文件”,然后选择“保存结果到文件”,支持3种文件格式类型,我比较喜欢使用csv格式,方便查看。

    image-20210427134710324

    3 TscanCode

    1. 简介

    TscanCode是腾讯自研的一款静态代码扫描工具,支持C++语言,C#,Lua语言,在发掘C++空指针,

    越界、未初始化,C#空引用,Lua变量未初始化等比较有效。

    下载地址:Tencent/TscanCode: A static code analyzer for C++, C#, Lua (github.com)

    2)使用方式

    打开软件,选择“扫描文件夹”即可。

    image-20210427135709917

    扫描完成后,会直接输出弹出一个扫描结果的窗口,可以保存结果,仅支持xml格式。

    image-20210427135616706

    也可以直接双击结果,查看报错的位置的代码。

    image-20210427140024174

    4)规格选择

    点击“设置”,可查看代码扫描的规则,以及选择规则。

    image-20210427140227315

  • 相关阅读:
    箭头函数和普通函数的区别是什么?
    前端如何优化网站性能?
    instanceof原理
    call、apply区别
    函数的节流和防抖
    关于this的指向性问题
    undefined 和null的区别?
    浅谈堆和栈的理解?
    关于vue中watch和computed
    简单说一下什么是回流和重绘
  • 原文地址:https://www.cnblogs.com/mrlayfolk/p/14708714.html
Copyright © 2020-2023  润新知