LS.CALL
GUI 函数中非本地化字符串的可疑使用
本地化字符串检查器用于检查面向用户的函数中是否使用了非本地化字符串。通常,以这种或那种形式显示给用户的所有字符串都必须经过本地化。这些字符串可以是简单的标记或按钮标题,也可以是在运行时利用格式字符串和数据构造的更复杂的字符串。
重要事项:这是一个实验性检查器。
自定义知识库 (KB)
Klocwork 使用知识库来确定用作字符串来源的函数以及用于向用户显示信息的函数。因此存在两种类型的 KB 记录:
- 来源 KB (LS.SRC):返回字符串的函数
sprintf - LS.SRC 1:$1:1
sprintf 的第一个参数为字符串
- 接收器 KB (xLS):向用户显示信息的函数。
print_string - xLS 1:$1:1
print_string 函数是向用户打印字符串的函数。
代码示例
复制
int main()
{
const char* nonLocalizedString = “Hello World”;
print_string(nonLocalizedString); // Line 4.LS.CALL
return 0;
}
Klocwork 针对第 4 行生成本地化字符串报告,表明存在使用非本地化字符串对 GUI 函数的潜在调用。
注意:为了让工具知道 print_string 为 GUI 函数,应通过具有以下记录的 KB 来运行以上代码:print_string - xLS 1:$1:1