详细说明
coverity
Coverity是业界领先的代码静态检查工具,支持C/C++、C#、Java、Python等多种语言的质量缺陷和和安全问题的分析与修复。Coverity拥有业界最高的代码检查准确率,能够挖掘深层次的代码质量问题,同时能够检查OWASP top 10和CWE Top 25安全问题,并可和业界主流应用生周期工具集成,从而帮助企业在研发前期发现并解决问题,以最小的成本保证软件产品研发质量和安全。
Coverity能够找到的 C/C++ 缺陷 |
资源泄露 :– 内存泄露– Microsoft COM 内存泄露– Object资源泄露– 不当delete未初始化变量– 返回语句丢失– 未初始化的指针/标量/数组 读写– 类或结构体中未初始化的数据成员并发缺陷– 死锁– 竞态条件(Race conditions)– 阻塞调用误用算术错误– 负变量不当使用– 异常符号扩展– 整数溢出– 除零异常内存崩溃– 内存访问溢出– 字符串长度计算错误– 缓冲区溢出– 写指针溢出– 负数组索引写入– 内存错误分配– 错误的内存释放非法内存访问– 不正确的delete操作– 溢出指针读取– 越界读取– 返回指针至本地变量– 负数组索引读取– 已释放指针读/写– 不兼容的指针转换控制流缺陷– 逻辑/结构死代码– Switch语句中break遗失– 非本地资源不当使用 | 程序假死– 死循环– 双重锁或解锁丢失– 负循环边界值– 线程死锁– 持锁过程中调用sleep()空指针引用– Null检查后引用空指针– 直接引用返回的空指针– Null检查前引用空指针错误处理缺陷– 未验证的返回值– 未获取异常– 负变量不当使用代码维护性缺陷– 多返回语句– 无效变量异常代码– 复制/粘贴错误– 格式错误– 输入变量调换不安全的数据处理– 不可信的循环数据源– 使用非可信数据源读写数组/指针– 使用非可信数据源格式化字符串性能缺陷– 值传递大参数– 使用大堆栈安全措施违反– 缓冲区溢出– 固定长度缓冲区写入– 非安全函数调用– 非安全临时文件使用– 检查/使用时间不一致– 用户空间指针不当使用API错误使用– 非安全chroot调用– 错误的迭代器使用– printf() 参数不匹配 |
Coverity能够找到的 Java 缺陷: |
类层次结构不一致Web 应用安全缺陷(OWASP Top 10)– 跨站脚本攻击– SQL 注入– 命令行注入– 路径遍历…资源泄露– 数据库连接资源泄露– 资源泄露– Socket & Stream 泄露并发数据访问异常– 变量非原子更新– 双重检查锁定– 数据竞态条件– Volatile非原子更新– Servlet 属性无效锁定– 单例模式竞态条件程序假死– 线程死锁– 死锁空指针引用– Null检查后引用空指针– 直接引用返回的空指针– Null检查前引用空指针API 使用错误– 无效迭代器使用– 不可修改的集合错误– 已释放资源调用性能缺陷– 低效率方法使用– 在循环中连接字符串– 冗余同步 | 逻辑错误– 不可达代码– 未使用变量– 常量表达式– 非本地资源不当使用– 整数溢出– 不当分号类层次结构不一致– 调用 super.clone() 或 supler.finalize()失败– 父函数调用丢失– 构造函数中使用虚函数控制流缺陷– 在Finally模块中返回– Switch语句中break丢失错误处理缺陷– 未验证的返回值数据库操作– 不正确的实体哈希– Load函数返回值错误验证– 不完全持续周期– get()不当使用代码可维护性缺陷– 调用已过期方法– 显式垃圾收集– 非静态方法中设置静态变量– 复制/粘贴错误– 不可达代码可疑代码– 参数次序错误格式错误 |
Coverity能够找到的 C# 缺陷 |
资源泄露– 数据库连接资源泄露– 资源泄露– Socket & Stream 泄露API 使用错误– 已释放资源调用并发数据访问异常– 变量非原子更新– 数据竞态条件性能缺陷– 低效率方法使用– 在循环中连接字符串– 冗余同步程序假死– 线程死锁– 死循环可疑代码– 复制/粘贴错误– 参数次序错误– 格式错误 | 类层次结构不一致– 调用 base.close() 或 base.dispose()失败– 父函数调用丢失控制流缺陷– 可疑的额外分号– 不一致比较– 不兼容的类型比较空指针引用– Null检查后引用空指针– 直接引用返回的空指针– Null检查前引用空指针算术错误– 错误移位操作– 不正确的表达式– 表达式计算过程中溢出 |