更新时间:2026-01-08 GMT+08:00
分享

智能化生成代码修复建议

执行代码检查任务后,对于检查出的待处理问题,可以通过智能化生成(支持批量或单个两种方式)代码修复建议来辅助快速修复代码问题,从而显著提升问题识别和修复建议的精准度,以及代码问题修复效率,更有效地保障了产品代码质量。

前提条件

  • 请确认当前环境已支持智能化(导航栏中可以找到图标)。如果未支持,请提交工单联系技术支持工程师。
  • 请租户管理员通过“租户设置 > 通用设置 > 服务级访问权限管理”页面为用户开启“盘古助手”权限。
  • 旧版本升级改造为智能化版本后,存量代码检查任务需要重新执行完成后才可支持批量生成代码修复建议功能。

批量生成代码修复建议

  1. 访问CodeArts Check服务首页
  2. 在任务列表中单击任务名称,进入“代码检查详情”页面。
  3. 选择“代码问题”页签,进入代码问题详情页面。
  4. 单击页面右上角“批量生成代码修复建议”(智能化生成代码修复建议的功能目前仅支持JAVA、C/C++语言的部分规则,详见支持智能化生成代码修复建议的规则),可以对该任务检查出的支持AI修复建议的待处理问题批量生成代码修复建议。

    进度条显示“生成中”,可实时单击按钮查看已生成的代码修复建议。

  5. “批量生成代码修复建议”对话框,可执行以下操作:

    • 选择“建议修复”页签,可查看建议修复的问题列表。

      在问题列表中单击“操作”,跳转至“问题上下文”页面,可查看问题信息详情。

      “问题上下文”区域的“AI修复建议”框中,可查看具体的原因、修复方案、结论以及修复前后的具体内容对比,如下图所示。

      图1 问题上下文
      • 单击右上角的“左右”“上下”,可设置代码修复前后内容对比的显示方式为左右排列或上下排列。
      • 单击左下角“提交到已有分支”,在弹框中单击“提交代码”,可将修复的代码提交到已有分支。
      • 单击左下角“复制修复后代码”,可快速复制修复后的代码内容。
    • 选择“建议屏蔽”页签,可查看建议屏蔽的问题列表。

      在问题列表中单击“操作”,跳转至“问题上下文”页面,可查看问题详情信息。

      “问题上下文”区域的“AI修复建议”框中,可查看具体的原因和结论。

生成单个AI修复建议

  1. 访问CodeArts Check服务首页
  2. 在任务列表中单击任务名称,进入“代码检查详情”页面。
  3. 选择“代码问题”页签,进入代码问题详情页面。
  4. 在单个问题区域单击“AI修复建议”(智能化生成代码修复建议的功能目前仅支持JAVA、C/C++语言的部分规则,详见支持智能化生成代码修复建议的规则),可查看具体修复建议。

    • 结论为“有风险”的问题修复建议如下图所示。
      图2 有风险
      • 单击右上角的“左右”“上下”,可设置代码修复前后内容对比的显示方式为左右排列或上下排列。
      • 单击左下角“提交到已有分支”,在弹框中单击“提交代码”,可将修复的代码提交到已有分支。
      • 单击左下角“复制修复后代码”,可快速复制修复后的代码内容。
    • 结论为“无风险”的问题(建议屏蔽)修复建议如下图所示。
      图3 无风险

支持智能化生成代码修复建议的规则

表1 支持智能化生成代码修复建议的规则:JAVA语言的部分规则表

规则名称

引擎

语言

G.FMT.17 应用于类、方法、类属性的每个注解独占一行

fixbotengine-java

JAVA

G.TYP.09 字符与字节的互相转换操作,要指明正确的编码方式

fixbotengine-java

JAVA

G.PRM.02 使用System.arraycopy()或Arrays.copyOf()进行数组复制

fixbotengine-java

JAVA

G.FMT.07 应该避免空块,必须使用空块时,应采用统一的大括号换行风格

fixbotengine-java

JAVA

G.ERR.02 不要直接捕获异常的基类Throwable、Exception、RuntimeException

fixbotengine-java

JAVA

G.NAM.08 布尔型变量建议以表达是非意义的动词开头

fixbotengine-java

JAVA

G.NAM.07 避免使用具有否定含义布尔变量名

fixbotengine-java

JAVA

G.FMT.06 对于非空块状结构,左大括号应该放在行尾,右大括号应该另起一行

fixbotengine-java

JAVA

G.OTH.03 不用的代码段包括import,直接删除,不要注释掉--不用的代码段,直接删除,不要注释掉

fixbotengine-java

JAVA

G.MET.05 对于返回数组或者容器的方法,应返回长度为0的数组或者容器,代替返回null

fixbotengine-java

JAVA

G.FMT.18 块注释的缩进级别应与上下文代码相同

fixbotengine-java

JAVA

G.CMT.06 注释与代码之间应该有空行或空格,注释符与注释内容之间应该有空格

fixbotengine-java

JAVA

G.TYP.06 禁止尝试与NaN进行比较运算,相等操作使用Double或Float的isNaN()方法

fixbotengine-java

JAVA

G.TYP.12 明确地进行类型转换,避免依赖隐式类型转换

fixbotengine-java

JAVA

G.CTL.01 不要在控制性条件表达式中执行赋值操作或执行复杂的条件判断

fixbotengine-java

JAVA

G.NAM.05 常量名采用全大写单词,单词间以下划线分隔

fixbotengine-java

JAVA

G.OBJ.02 不要在父类的构造方法中调用可能被子类覆写的方法

fixbotengine-java

JAVA

G.LOG.01 记录日志应该使用Facade模式的日志框架

fixbotengine-java

JAVA

G.CON.06 使用新并发工具代替wait()和notify()

fixbotengine-java

JAVA

G.CTL.02 含else if分支的条件判断应在最后加一个else分支

fixbotengine-java

JAVA

G.ERR.01 不要通过一个空的catch块忽略异常

fixbotengine-java

JAVA

G.FMT.15 枚举常量间用逗号隔开,换行可选

fixbotengine-java

JAVA

G.OBJ.06 覆写equals方法时,要同时覆写hashCode方法

fixbotengine-java

JAVA

G.EXP.04 表达式的比较,应该遵循左侧倾向于变化、右侧倾向于不变的原则--表达式比较左变右不变

fixbotengine-java

JAVA

G.FMT.16 case语句块结束时如果不加break,需要有注释说明(fall-through)

fixbotengine-java

JAVA

G.OBJ.01 应避免定义public且非final的类属性

fixbotengine-java

JAVA

G.TYP.07 不要在代码中硬编码用于表示换行、文件路径分隔的字符--不要在代码中硬编码用于表示文件路径分隔的字符

fixbotengine-java

JAVA

G.ERR.08 不要使用return、break、continue或抛出异常使finally块非正常结束

fixbotengine-java

JAVA

G.MET.04 谨慎使用可变数量参数

fixbotengine-java

JAVA

G.TYP.05 浮点型数据判断相等不要直接使用==,浮点型包装类型不要用equals()或者flt.compareTo(another)==0作相等的比较

fixbotengine-java

JAVA

G.COL.04 不要在foreach循环中通过remove()/add()方法更改集合

fixbotengine-java

JAVA

G.ERR.11 对于GeneralSecurityException及其子类异常应记录日志

fixbotengine-java

JAVA

G.COL.03 声明一个泛型类通过限定符限制可用的泛型类型

fixbotengine-java

JAVA

G.COL.02 优先使用泛型集合,而不是数组

fixbotengine-java

JAVA

G.OBJ.04 避免在无关的变量或无关的概念之间重用名字,避免隐藏(hide)、遮蔽(shadow)和遮掩(obscure)

fixbotengine-java

JAVA

G.FMT.14 不应插入多余空格使代码垂直对齐

fixbotengine-java

JAVA

G.NAM.01 标识符应由不超过64字符的字母、数字和下划线组成

fixbotengine-java

JAVA

G.CMT.03 方法的Javadoc中应该包含功能说明,根据实际需要按顺序使用@param、@return、@throws标签对参数、返回值、异常进行注释

fixbotengine-java

JAVA

G.CMT.01 public或protected修饰的元素应添加Javadoc注释

fixbotengine-java

JAVA

G.TYP.08 字符串大小写转换、数字格式化为西方数字时,必须加上Locale.ROOT或Locale.ENGLISH

fixbotengine-java

JAVA

G.LOG.03 日志必须分等级

fixbotengine-java

JAVA

G.LOG.02 日志工具Logger类的实例必须声明为private static final或者private final

fixbotengine-java

JAVA

G.LOG.04 非仅限于中文区销售产品禁止用中文打印日志

fixbotengine-java

JAVA

G.CTL.05 避免在循环体中修改循环控制变量

fixbotengine-java

JAVA

G.TYP.03 禁止使用浮点数作为循环计数器

fixbotengine-java

JAVA

G.PRM.08 禁止使用主动GC(除非在密码、RMI等方面),尤其是在频繁/周期性的逻辑中

fixbotengine-java

JAVA

G.NAM.04 方法名应采用小驼峰命名

fixbotengine-java

JAVA

G.MET.01 方法要简短--方法的参数不应超过5个

fixbotengine-java

JAVA

G.EXP.01 不要在单个表达式中对相同的变量赋值超过一次

fixbotengine-java

JAVA

G.DCL.01 每行声明一个变量

fixbotengine-java

JAVA

G.DCL.05 禁止将mutable对象定义为常量

fixbotengine-java

JAVA

G.FMT.05 在条件语句和循环块中应该使用大括号

fixbotengine-java

JAVA

G.DCL.03 禁止C风格的数组声明

fixbotengine-java

JAVA

G.NAM.06 变量采用小驼峰命名

fixbotengine-java

JAVA

G.FMT.09 每行不超过一个语句

fixbotengine-java

JAVA

G.EXP.03 条件表达式?:的第2和第3个操作数应使用相同的类型

fixbotengine-java

JAVA

G.MET.06 使用Optional代替null作为返回值或者可能的缺失值;禁止对Optional对象赋值为null

fixbotengine-java

JAVA

G.DCL.04 避免枚举常量序号的产生依赖于ordinal()方法

fixbotengine-java

JAVA

G.NAM.02 包名中的字母应小写,包名以点号分隔层级

fixbotengine-java

JAVA

G.MET.03 不应把方法的参数当做临时变量

fixbotengine-java

JAVA

G.EXP.02 用括号明确表达式的操作顺序,避免过分依赖默认优先级

fixbotengine-java

JAVA

G.FMT.12 减少不必要的空行,保持代码紧凑

fixbotengine-java

JAVA

G.OBJ.10 接口定义中去掉多余的修饰词

fixbotengine-java

JAVA

G.PRM.07 进行IO类操作时,必须在try-with-resource或finally里关闭资源

fixbotengine-java

JAVA

G.PRM.10 不要创建临时变量作为return语句的返回值

fixbotengine-java

JAVA

G.OBJ.03 构造方法如果有多个,尽量重用

fixbotengine-java

JAVA

G.ERR.03 不要直接捕获可通过预检查进行处理的RuntimeException,如NullPointerException、IndexOutOfBoundsException等

fixbotengine-java

JAVA

G.SER.02 实现Serializable接口的可序列化类应该显式声明serialVersionUID

fixbotengine-java

JAVA

G.SER.04 禁止直接序列化指向系统资源的信息

fixbotengine-java

JAVA

G.EXP.04 表达式的比较,应该遵循左侧倾向于变化、右侧倾向于不变的原则--使用equals方法进行字符串比较

fixbotengine-java

JAVA

G.ERR.10 尽量消除非受检的异常,不应该在整个类上使用SuppressWarning

fixbotengine-java

JAVA

G.CTL.03 switch语句要有default分支

fixbotengine-java

JAVA

G.CON.12 避免不加控制地创建新线程,应该使用线程池来管控资源

fixbotengine-java

JAVA

G.CON.08 使用Thread对象的setUncaughtExceptionHandler方法注册未捕获异常处理者

fixbotengine-java

JAVA

G.CON.07 创建新线程时必须指定线程名

fixbotengine-java

JAVA

G.ERR.07 一个方法不应抛出超过5个异常,并在Javadoc的@throws标签中记录每个抛出的异常及其条件

fixbotengine-java

JAVA

G.PRM.01 将集合转为数组时使用Collection<T>.toArray(T[])方法;Java 11后使用Collection<T>.toArray(IntFunction<T[]>)

fixbotengine-java

JAVA

G.CMT.07 正式交付给客户的代码不应包含TODO/FIXME注释

fixbotengine-java

JAVA

G.TYP.13 在引用类型向下转换前用instanceof进行判断

fixbotengine-java

JAVA

G.NAM.03 类、枚举和接口名应采用大驼峰命名

fixbotengine-java

JAVA

G.PRM.05 禁止创建不必要的对象

fixbotengine-java

JAVA

G.OBJ.08 正确实现单例模式

fixbotengine-java

JAVA

G.OTH.03 不用的代码段包括import,直接删除,不要注释掉--不用的import语句,直接删除,不要注释掉

fixbotengine-java

JAVA

G.FMT.20 数字字面量应该设置合适的后缀,long类型应该使用L作为后缀

fixbotengine-java

JAVA

G.TYP.11 基本类型优于包装类型,注意合理使用包装类型

fixbotengine-java

JAVA

G.CMT.02 顶层public类的Javadoc应该包含功能说明和创建日期/版本信息

fixbotengine-java

JAVA

G.CMT.04 不写空有格式的方法头注释

fixbotengine-java

JAVA

G.CMT.05 文件头注释应该包含版权许可信息

fixbotengine-java

JAVA

G.ERR.04 防止通过异常泄露敏感信息

codemars

JAVA

G.ERR.05 方法抛出的异常,应该与本身的抽象层次相对应

fixbotengine-java

JAVA

G.ERR.06 在catch块中抛出新异常时,避免丢失原始异常信息

secbrella

JAVA

G.EXP.06 代码中不应使用断言(assert)

codemars

JAVA

G.FIO.01 使用外部数据构造的文件路径前必须进行校验,校验前必须对文件路径进行规范化处理

codemars

JAVA

G.FMT.13 用空格突出关键字和重要信息

fixbotengine-java

JAVA

G.FMT.19 类和成员修饰符(如果存在)按Java语言规范建议的顺序显示

fixbotengine-java

JAVA

G.OTH.05 删除无效或永不执行的代码

secbrella

JAVA

G.PRM.04 不要对正则表达式进行频繁重复预编译

fixbotengine-java

JAVA

G.PRM.09 禁止使用Finalizer机制

fixbotengine-java

JAVA

G.SEC.04 使用安全管理器来保护敏感操作

codemars

JAVA

G.SER.05 禁止序列化非静态的内部类

codemars

JAVA

G.CON.05 禁止使用非线程安全的方法来覆写线程安全的方法

secbrella

JAVA

G.CON.10 线程中断由业务代码来协作完成,慎用Thread.interrupt方法

fixbotengine-java

JAVA

G.ERR.08 不要使用return、break、continue或抛出异常使finally块非正常结束--在finally块中使用throw语句

codemars

JAVA

G.ERR.09 不要调用System.exit()终止JVM

codemars

JAVA

G.MET.07 不要忽略方法的返回值

secbrella

JAVA

表2 支持智能化生成代码修复建议的规则:C语言的部分规则表

规则名称

引擎

语言

G.AST.03 禁止用断言检测程序在运行期间可能导致的错误,可能发生的错误要用错误处理代码来处理【C】

codemars

C

G.PRE.04 禁止把带副作用的表达式作为参数传递给函数式宏【C】

clangtidy

C

G.CMT.02 代码注释置于对应代码的上方或右边【C】

fixbotengine-cxx

C

G.OTH.01 删除无效或永不执行的代码【C】

fixbotengine-cxx

C

G.CMT.01 注释符与注释内容间要有1空格【C】

fixbotengine-cxx

C

G.PRE.03 包含多条语句的函数式宏的实现语句必须放在 do-while(0) 中【C】

fixbotengine-cxx

C

G.EXP.04 用括号明确表达式的操作顺序,避免过分依赖默认优先级【C】

fixbotengine-cxx

C

G.PRE.09 宏定义不以分号结尾【C】

fixbotengine-cxx

C

G.FMT.04 一行只有一条语句【C】

fixbotengine-cxx

C

P.04 对所有外部数据进行合法性检查【C】

codemars

C

G.FIL.03 不要在共享目录中创建临时文件【C】

codemars

C

G.INT.03 确保除法和余数运算不会导致除零错误(被零除)【C】

codemars

C

G.FUU.08 禁用abort函数【C】

codemars

C

G.FUU.07 除main函数以外的其他函数,禁止使用exit、ExitProcess函数退出【C】

codemars

C

G.FUU.10 禁止使用alloca()函数申请栈上内存【C】

codemars

C

G.FUU.09 禁止使用realloc()函数【C】

codemars

C

G.FUU.04 禁用atexit函数【C】

codemars

C

G.OTH.05 禁止代码中包含公网地址【C】

codemars

C

G.FMT.11 用空格突出关键字和重要信息--三元条件表达式【C】

clangtidy

C

G.EXP.02 表达式的比较,应当遵循左侧倾向于变化、右侧倾向于不变的原则【C】

clangtidy

C

G.CTL.07 switch语句要有default分支--default不是最后一个分支【C】

clangtidy

C

G.FUD.09 避免修改函数参数的值【C】

clangtidy

C

G.VAR.02 不要在子作用域中重用变量名【C】

clangtidy

C

G.CNS.01 禁止使用小写字母"l"作为数值型常量后缀【C】

clangtidy

C

G.PRE.02 定义宏时,要使用完备的括号【C】

clangtidy

C

G.FMT.11 用空格突出关键字和重要信息--函数名【C】

clangtidy

C

G.FMT.11 用空格突出关键字和重要信息--一元表达式【C】

clangtidy

C

G.FUU.21 禁止使用内存操作类不安全函数【C】

codemars

C

G.FUU.11 必须检查安全函数返回值,并进行正确的处理【C】

codemars

C

G.FUU.12 正确设置安全函数中的destMax参数--检查destMax参数是否设置正确【C】

codemars

C

G.FUU.12 正确设置安全函数中的destMax参数--检查destMax和count参数【C】

codemars

C

G.FIL.02 使用文件路径前必须进行规范化并校验【C】

secbrella:hcs

C

G.INT.03 确保除法和余数运算不会导致除零错误(被零除)【C】

secbrella:hcs

C

G.EXP.01 执行算术运算或比较操作的两个操作数要求具有相同的基本类型【C】

secbrella:hcs

C

G.OTH.04 禁止在发布版本中输出对象或函数的地址【C】

secbrella:hcs

C

G.FUU.11 必须检查安全函数返回值,并进行正确的处理【C】

secbrella:hcs

C

G.VAR.03 避免大量栈分配【C】

secbrella:hcs

C

G.FUU.22 避免使用atoi、atol、atoll、atof函数【C】

secbrella:hcs

C

G.FUU.17 禁止外部可控数据作为dlopen/LoadLibrary等模块加载函数的参数【C】

secbrella:hcs

C

G.VAR.05 指向资源句柄或描述符的变量,在资源释放后立即赋予新值【C】

codemars

C

G.MEM.01 内存申请前,必须对申请内存大小进行合法性校验【C】

codemars

C

G.OTH.03 禁用rand函数产生用于安全用途的伪随机数【C】

codemars

C

G.AST.01 断言必须使用宏定义,且只能在调试版本中生效【C】

codemars

C

G.AST.02 避免在代码中直接使用assert()【C】

codemars

C

G.TYP.04 避免隐式有损算术转换【C】

secbrella:hcs

C

G.ARR.06 不要使用变长数组类型【C】

secbrella:hcs

C

表3 支持智能化生成代码修复建议的规则:C++语言的部分规则表

规则名称

引擎

语言

G.AST.03 禁止用断言检测程序在运行期间可能导致的错误,可能发生的错误要用错误处理代码来处理

codemars

C++

G.PRE.04 禁止把带副作用的表达式作为参数传递给函数式宏

clangtidy

C++

G.EXP.43-CPP 不用的代码段直接删除,不要注释掉

fixbotengine-cxx

C++

G.OTH.01 删除无效或永不执行的代码

fixbotengine-cxx

C++

G.CMT.01-CPP 注释符与注释内容间留有1个空格

fixbotengine-cxx

C++

G.CMT.02-CPP 代码注释置于对应代码的上方或右边

fixbotengine-cxx

C++

G.PRE.03 包含多条语句的函数式宏的实现语句必须放在 do-while(0) 中

fixbotengine-cxx

C++

G.EXP.30-CPP 用括号明确表达式的操作顺序,避免过分依赖默认优先级

fixbotengine-cxx

C++

G.PRE.09 宏定义不以分号结尾

fixbotengine-cxx

C++

G.FMT.04-CPP 每个变量单独一行进行声明或赋值

fixbotengine-cxx

C++

G.STD.15-CPP 禁止外部可控数据作为进程启动函数的参数或者作为dlopen/LoadLibrary等模块加载函数的参数

codemars

C++

G.FMT.14-CPP 指针类型"*"和引用类型"&"只跟随类型或变量名--引用类型

fixbotengine-cxx

C++

G.FMT.09-CPP 构造函数初始化列表放在同一行或按4空格缩进并排多行

fixbotengine-cxx

C++

G.RES.10-CPP 使用std::make_shared 而不是new 创建std::shared_ptr

fixbotengine-cxx

C++

G.RES.09-CPP 使用std::make_unique 而不是new 创建std::unique_ptr

fixbotengine-cxx

C++

G.FIL.03 不要在共享目录中创建临时文件

codemars

C++

G.EXP.22-CPP 确保除法和余数运算不会导致除零错误(被零除)

codemars

C++

G.FUU.10 禁止使用alloca()函数申请栈上内存

codemars

C++

G.FUU.09 禁止使用realloc()函数

codemars

C++

G.STD.16-CPP 禁用程序与线程的退出函数和atexit函数

codemars

C++

G.OTH.05 禁止代码中包含公网地址

codemars

C++

G.FMT.16-CPP 用空格突出关键字和重要信息--三元条件表达式

clangtidy

C++

G.EXP.28-CPP bool类型比较应避免多余的==或!=

clangtidy

C++

G.EXP.29-CPP 比较两个表达式时,左侧倾向于变化,右侧倾向于不变

clangtidy

C++

G.EXP.37-CPP switch语句要有default分支--default不是最后一个分支

clangtidy

C++

G.CLS.03-CPP 单参数构造函数声明为explicit

clangtidy

C++

G.EXP.10-CPP 不要在嵌套作用域中重用名称

clangtidy

C++

G.CNS.01-CPP 禁止使用小写字母"l"作为数值型字面量后缀

clangtidy

C++

G.PRE.01-CPP 禁止使用宏来表示常量

clangtidy

C++

G.PRE.02 定义宏时,要使用完备的括号

clangtidy

C++

G.FMT.16-CPP 用空格突出关键字和重要信息--函数名

clangtidy

C++

G.FMT.16-CPP 用空格突出关键字和重要信息--一元表达式

clangtidy

C++

G.INC.09-CPP 头文件中禁止向全局命名空间中导入符号或定义别名

clangtidy

C++

G.ENU.02-CPP 避免定义未命名的枚举

clangtidy

C++

G.EXP.14-CPP 使用由C++提供的类型转换操作

clangtidy

C++

G.FUN.03-CPP 禁止函数有未被使用的参数

clangtidy

C++

G.FUN.06-CPP 函数参数需传入单个对象时应以引用取代指针

clangtidy

C++

G.EXP.34-CPP 编译期可确定的断言检查使用static_assert

clangtidy

C++

G.STD.01-CPP 使用新的标准头文件

clangtidy

C++

G.CLS.12-CPP 在重写虚函数时应明确指定override或final

clangtidy

C++

G.FUU.21 禁止使用内存操作类不安全函数

codemars

C++

G.FUU.11 必须检查安全函数返回值,并进行正确的处理

codemars

C++

G.FUU.12 正确设置安全函数中的destMax参数--检查destMax参数是否设置正确

codemars

C++

G.FUU.12 正确设置安全函数中的destMax参数--检查destMax和count参数

codemars

C++

G.FIL.02 使用文件路径前必须进行规范化并校验

secbrella:hcs

C++

G.RES.13-CPP 使用恰当的方式处理new操作符的内存分配错误

secbrella:hcs

C++

G.RES.14-CPP 避免出现delete this操作

secbrella:hcs

C++

G.EXP.22-CPP 确保除法和余数运算不会导致除零错误(被零除)

secbrella:hcs

C++

G.EXP.25-CPP 表达式中不要混用有符号数和无符号数

secbrella:hcs

C++

G.CLS.09-CPP 在移动构造函数和移动赋值操作符中必须将源对象的资源正确重置

secbrella:hcs

C++

G.OTH.04 禁止在发布版本中输出对象或函数的地址

secbrella:hcs

C++

G.FUU.11 必须检查安全函数返回值,并进行正确的处理

secbrella:hcs

C++

G.VAR.03 避免大量栈分配

secbrella:hcs

C++

G.STD.06-CPP 避免使用atoi、atol、atoll、atof函数

secbrella:hcs

C++

G.RES.07-CPP 指向资源句柄或描述符的变量,在资源释放后立即赋予新值

codemars

C++

G.RES.02-CPP 内存申请前,必须对申请内存大小进行合法性校验

codemars

C++

G.OTH.03 禁用rand函数产生用于安全用途的伪随机数

codemars

C++

G.FMT.12-CPP 避免将if/else/else if写在同一行

fixbotengine-cxx

C++

G.EXP.17-CPP 避免隐式有损算数转换

secbrella:hcs

C++

相关文档