zoukankan      html  css  js  c++  java
  • 静态代码扫描工具简介

    介绍一些常用的静态代码扫描工具,由于我也是才使用,可能了解的不全面。另外,以下我说明的代码是使用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

  • 相关阅读:
    [HNOI2016]序列
    [Cqoi2015] 编号 【逆向思维,暴力枚举】
    [NOI2015] 软件包管理器【树链剖分+线段树区间覆盖】
    [Hdu-6053] TrickGCD[容斥,前缀和]
    [Hdu-5155] Harry And Magic Box[思维题+容斥,计数Dp]
    牛客NOIP暑期七天营-提高组6
    [SHOI2007] 书柜的尺寸 思维题+Dp+空间优化
    [UVA12235] Help Bubu 思维题+状态定义+Dp
    牛客NOIP暑期七天营-TG3 赛后题解
    牛客NOIP暑期七天营-TG1 赛后题解
  • 原文地址:https://www.cnblogs.com/mrlayfolk/p/14708714.html
Copyright © 2011-2022 走看看