UNUSED.FUNC.GEN

未使用的函数

已定义但未使用的函数。

漏洞与风险

已定义但未使用的函数可能存在少量隐患。可能导致开发混淆,例如拥有与被调用的函数名称类似的函数。在极少数的情况下,未使用的函数可能还会找到其最终可执行文件(可能导致其他漏洞)的路径。该检查器最关注的是未使用的静态函数。根据定义,静态函数无法从转换单元外部调用(除非该函数位于头文件中且包含在多个转换单元中)。

漏洞代码示例 1

复制
  static void used() {}
  static void unused() {}
  int main() {
    used();
    return 0;
  }

在上述代码段中,函数“unused()”被定义为静态函数但是从未在当前转换单元中使用;因此应将其移除。Klocwork 会在第 2 行生成 UNUSED.FUNC.GEN,以警告开发人员。

修正代码示例 1

复制
  static void used() {}
  int main() {
    used();
    return 0;
  }

要解决该问题,只需将函数“unused()”从文件中移除。

漏洞代码示例 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)。

相关检查器