cppcheck

cppcheck

14.7MB / 编程开发

游戏简介
  • cppcheck

    cppcheck是款简单易用的c/c++代码缺陷静态检查工具。cppcheck不同于代码编译器以及其它的分析工具,它只检查编译器检查不出来的bug,不检查语法的错误,以检测实际中的错误代码为目标。

     

    cppcheck简介:

     

    Cppcheck是一个静态分析工具对C/ C ++代码。

    C/ C ++编译器和很多其他分析工具,它不检测代码中的语法错误。

    Cppcheck主要检测的漏洞,该编译器通常不检测的类型。

    我们的目标是(具有零误报即),以检测只实际中的错误代码。

     

    cppcheck功能介绍:

     

    检测各种错误在你的代码。

    - 出界检查

    - 内存泄漏检测

    - 检测可能的空指针废除

    - 检查未初始化变量

    - 检查STL的无效使用

    - 检查异常安全

    - 如果过时或不安全的功能是用来警告

    - 警告没有使用的或多余的代码

    - 检测各种可疑的指示代码中的bug

     

    cppcheck特色介绍:

     

    测试

    - 选择一个项目并测试它的源与最新版本。写门票TRAC你从Cppcheck发现的问题。

    发展

    - 选择从Trac的车票,编写测试用例为它(和写评论测试用例已创建的车票)。

    或者选择一个测试用例失败,并试图修复它。

    打个补丁,并提交给Trac的内联如果是小,或者将其固定为一个文件。

    市场营销

    - 写文章,评论或告诉你的朋友们。

    用户越多,我们有,更多的人,我们有测试和更好的,我们能成。

    设计

    - 创造新的良好的检查和创建门票TRAC他们。

    积分

    - 编写一个插件,你最喜欢的IDE或您的发行或操作系统创建一个包。

    技术撰稿人

    - 写出我们发现错误更好的文档。目前,只有少数的错误有任何文件都没有。

     

    cppcheck检查列表:

     

    1. 自动变量

    指针变量是唯一有效的,只要该变量是在范围内。

    2. 检查:

    - 返回指针自动或临时变量

    - 分配一个变量的地址给一个函数的一个有效的参数

    - 返回引用本地/临时变量

    - 返回函数参数的地址

    - 指针参数可疑分配

    - 功能参数无用分配

    3. 布尔

    布尔类型检查

    - 使用增量布尔

    - 一个布尔值与非零整数比较

    - 布尔表达式的一个整数比0或1的比较

    - 一个功能比较使用关系运算符返回布尔值

    - 与布尔值使用关系运算符的布尔值比较

    - 使用布尔按位中表达

    - 指针加法的条件(无论是间接引用被忘记或指针溢出才能使病情假)

    - 分配布尔值指针或浮动

    4. 升压用法

    检查升压无效用法:

    - BOOST_FOREACH在集装箱改装

    5. 边界检查

    出界检查:

    - 数组索引出界检测通过价值流分析

    - 危险strncat函数的使用()

    - 通过为尺寸字符常量的功能就像memset的()

    - 的strncpy()离开字符串未终止

    - 访问数组负折射率

    - 主(的argv,argc个)参数不安全使用

    - 访问数组索引变量检查其值之前

    - 检查足够大的数组被传递给函数

    - 分配内存以负尺寸

    6. 类

    检查每个类的代码。

    - 缺少构造函数和拷贝构造函数

    - 构造函数应该是明确的

    - 通过构造函数初始化所有的变量?

    - 是否分配的所有变量通过运算符='?

    - 时发出警告memset的,的memcpy等都是在一个类中使用

    - 如果内存类的分配使用malloc警告()

    - 如果它是一个基类,检查的析构函数是虚拟的

    - 是否有未使用的私有函数?

    - “运算符='应该返回引用自

    - “运算符='应检查分配给自

    - 常量性的成员函数

    - 顺序初始化的

    - 推荐的初始化列表的使用

    - 一个构件的与自身初始化

    - 从“这个”可疑的减法

    - 在构造函数调用纯虚函数/析构函数

    - 重复的继承的数据成员

    7. 条件

    配合分配和其他条件的条件:

    - 不匹配的分配和比较=>比较总是真/假

    - 不匹配的LHS和RHS比较=>比较总是真/假

    - 检测的使用|其中&应该使用

    - 检测“如果”匹配与“否则,如果”条件

    - 失配BITAND(一个&= 0XF0;一个与= 1; =>α= 0)

    - 发现死代码是不可访问,由于反条件检查嵌套if语句

    - 条件,始终是真/假

    - 互斥超过||总为真

    - 模结果总是为真/假的比较。

    - 已知的变量值=>条件始终为真/假

    8. 异常安全

    检查异常安全

    - 在析构函数抛出异常

    - 在无效状态引发异常

    - 投掷捕获异常的副本,而不是重新抛出原始异常

    - 捕获到异常按值而不是按引用

    - 在noexcept抛出异常,不抛出异常(),属性((抛出异常))或__declspec(不抛出)函数

    - 未处理的异常规范时,调用函数foo()

    9. IO使用格式字符串

    检查格式字符串输入/输出操作。

    - 功能“的sprintf”的不良的使用(重叠的数据)

    - 在“scanf的”格式字符串缺失或错误宽度说明

    - 使用已关闭的文件

    - 文件输入/输出,无需定位结果未定义的行为

    - 阅读到只被打开写文件(反之亦然)

    - 对文件操作重新定位以追加模式打开

    - 对输入流使用fflush()

    - 输出流的无效使用。例如:“性病::法院<<性病::法院;”

    - 错误一些给'printf的“或参数”scanf函数;“

    猜你喜欢
    猜你喜欢
    猜你喜欢