Skip to main content

Flawfinder

·161 words·1 min
WFUing
Author
WFUing
A graduate who loves coding.
Table of Contents

Resources
#

下载
#

需要检测的c语言项目
#

easy demo
#

首先选取一个简单的demo

demo.cpp

#include <iostream>
using namespace std;

int main() 
{
    int exponent;
    float base, result = 1;

    cout << "Enter base and exponent respectively:  ";
    cin >> base >> exponent;

    cout << base << "^" << exponent << " = ";

    while (exponent != 0) {
        result *= base;
        --exponent;
    }

    cout << result;
    
    return 0;
}

grpc
#

使用分析
#

直接输入下面命令即可对代码进行静态分析。

flawfinder [要测试的文件目录]

demo.cpp
#

结果显示没有问题。

当然也可以将结果输出为 html 形式

flawfinder --quiet --html ./ > results.html

也可以输出为sarif格式

flawfinder --quiet --sarif ./ > results.sarif

grpc
#

搜集并了解其他的 c/c++代码分析工具,如 RATS、Splint 等,比较这些工具的功能。
#

Flawfinder:
#

  • 功能: Flawfinder主要用于查找C/C++代码中的安全漏洞,特别是与安全性相关的缺陷。
  • 使用场景: 适用于快速、简单的安全性检查,特别是对于较小的项目。
  • 优点: 简单易用,不需要深厚的专业知识,能够快速找出常见的代码漏洞。
  • 缺点: 不能进行深层次的静态分析,适用于快速的初步检查。

RATS
#

Rough Auditing Tool for Security

  • 功能: RATS用于查找C语言中的安全漏洞,特别关注与安全性相关的问题,如潜在的缓冲区溢出、格式字符串漏洞等。
  • 使用场景: 适合需要更灵活配置和深度检查的项目,可以根据具体需求进行调整。
  • 优点: 灵活,可以通过配置文件进行定制,能够检查代码中的多种潜在问题。
  • 缺点: 有时可能会产生误报,需要仔细审查结果。

Splint
#

  • 功能: Splint是一个C语言的静态分析工具,旨在查找代码中的潜在错误、不规范的用法和潜在的安全问题。
  • 使用场景: 适用于需要深入代码静态分析、关注规范性和可维护性的项目。
  • 优点: 提供详细的警告和错误信息,能够进行较为深入的代码静态分析。
  • 缺点: 需要一定的学习曲线,有时可能会产生大量的警告,需要谨慎使用。

Clang Static Analyzer
#

  • 功能: Clang Static Analyzer是基于Clang编译器的静态代码分析工具,用于查找C/C++代码中的潜在问题,如内存泄漏、空指针引用等。
  • 使用场景: 适用于项目使用Clang编译器,希望充分利用编译器集成静态分析的优势。
  • 优点: 集成于Clang编译器,能够提供高质量的静态分析结果,支持多种分析检查。
  • 缺点: 部分项目可能需要调整编译过程以适配Clang。

Coverity
#

  • 功能: Coverity是一款商业静态分析工具,用于查找C/C++代码中的缺陷和安全漏洞。
  • 使用场景: 适用于对代码质量有严格要求,愿意投资于高级静态分析工具的项目。
  • 优点: 高度精准的静态分析,能够提供低误报率的结果,支持大型项目。
  • 缺点: 是商业软件,可能需要付费许可。

💬评论