STRONG.TYPE.ASSIGN.RETURN

为强类型赋予不明返回值

STRONG.TYPE 系列检查器会检测违反或忽略程序员强制实施的强类型指定(类型定义的抽象类型),从而导致基础 ANSI 类型语义占据主导地位的情况。

STRONG.TYPE.ASSIGN.RETURN 检查器查找那些预期强类型但不包含强类型的函数 return 语句。

漏洞与风险

遵循 ANSI 标准的编译器不会针对此类问题生成警告,因为此编译器仅检查基础类型,不会检查表面类型(即程序员定义的类型)。所以可能会出现逻辑错误。

漏洞代码示例

复制
 typedef float Speed;
 
 Speed getTurtleSpeed()
 {
   return 1.0;
 }

Klocwork 标记了第 5 行,指出返回值不是预期的强类型 Speed。

修正代码示例

复制
 typedef float Speed;
 
 Speed getTurtleSpeed()
 {
   return (Speed)1.0;
 }

将返回值明确地转换为强类型 Speed 时,不会生成报告。