前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C/C++】代码质量缺陷规则包上新

【C/C++】代码质量缺陷规则包上新

作者头像
擒兽一号
发布2024-09-27 12:25:33
480
发布2024-09-27 12:25:33
举报
文章被收录于专栏:腾讯云代码分析
图片
图片

官网地址:https://cloud.tencent.com/product/tcap

官方开源仓库:(点击最下方【阅读原文】可直接跳转)https://github.com/Tencent/CodeAnalysis

国内工蜂镜像地址:https://git.code.tencent.com/Tencent_Open_Source/CodeAnalysis

规则包介绍

TCA支持首批7条规则,重点关注资源泄露、无用值检查、数组越界、缓冲区溢出等问题。

支持语言:C/C++

注:该规则包由TCA独立工具支持,需申请授权免费使用,申请传送门:

《CLS使用文档》:https://tencent.github.io/CodeAnalysis/zh/quickStarted/enhanceDeploy.html

启用规则包

分析方案 -> 代码检查 -> C/C++代码质量缺陷规则 -> 启用/查看规则

图片
图片

使用手册(部分)

线程锁检查

在使用多线程对文件全局变量或类成员在进行读写时,工具会对未正确的进行上锁操作和上锁异常而引发死锁的情况进行检查。

代码语言:javascript
复制
int counter = 0;std::mutex mtx;  // 保护countervoid increase1() {    while (1) {        if (counter <= 1000)            counter++;  // defect: missing_lock        else            break;    }}void increase2() {    while (1) {        mtx.lock();  // example_lock        if (counter <= 1000)            counter++;        else            break;        mtx.unlock();  // example_release    }}

无效值检查

检查那些赋予给变量的值是否正确被使用,存在连续两次赋予变量值的情况,视为第一次赋予的值未被正确使用,报出错误。 两次连续赋值可能存在条件控制语句出现错误、变量名拼写错误等情况。

代码语言:javascript
复制
const char* key_value(const int key) {    const char * value = 0;    if (key != 0) {        value = "Zeus";    } else if (key != 1) {        value = "Hades";    }     if (key != 2) { // Should be 'else if' here.        value = "Poseidon";  // defect: unused_value Zeus Hades  never used    }    else {        value = "Unknow    }    return result;}

更多内容请参考:

帮助文档->代码检查->典型规则包使用手册->【C/C++】代码质量缺陷规则包

图片
图片
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云代码分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 规则包介绍
  • 启用规则包
  • 使用手册(部分)
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档