UNUSED.FUNC.GEN
未使用的函数
已定义但未使用的函数。
漏洞与风险
已定义但未使用的函数可能存在少量隐患。可能导致开发混淆,例如拥有与被调用的函数名称类似的函数。在极少数的情况下,未使用的函数可能还会找到其最终可执行文件(可能导致其他漏洞)的路径。该检查器最关注的是未使用的静态函数。根据定义,静态函数无法从转换单元外部调用(除非该函数位于头文件中且包含在多个转换单元中)。
漏洞代码示例 1
复制
static void used() {}
static void unused() {}
int main() {
used();
return 0;
}
在上述代码段中,函数“unused()”被定义为静态函数但是从未在当前转换单元中使用;因此应将其移除。Klocwork 会在第 2 行生成 UNUSED.FUNC.GEN,以警告开发人员。
漏洞代码示例 2
复制
static void foo(int x) {}
static void foo(int x, int y) {}
int main() {
foo(0,0);
return 0;
}
思路相似,但是位于重载的函数的上下文中。Klocwork 会在第 1 行生成 UNUSED.FUNC.GEN。
修正代码示例 2
复制
static void used(int x, int y) {}
int main() {
used(0,0);
return 0;
}
仅移除 foo 的未使用版本-foo(int)。