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