我正在使用 PC-Lint 生成一个 XML 文件,其中包含运行生成的所有警告。
该过程几乎完美无缺,但有一个相当烦人的异常。我无法获取消息格式来打印发现警告的完全限定函数名称。它只打印精简后的函数名称。没有命名空间,没有类名。
这是我使用的格式字符串(我在本文末尾的文档中包含了相关的格式信息):
-"format=<message> <file>%f</file> <func>%i</func> <line>%l</line> <type>%t</type> <code>%n</代码> <desc>%m</desc> </message>"
因此,例如,为此:
class Bar {
void foo(int bar) {
}
};
我得到的错误是这样的(为了便于阅读,换行):
<message>
<file>D:\Code\CPPTest\CPPTest.cpp</file>
<func>foo</func>
<line>3</line>
<type>Info</type>
<code>715</code>
<desc>Symbol 'bar' (line 2) not referenced</desc>
</message>
正如你所看到的,函数名是按照我想要/期望的foo
而不是按照我的意愿编写的。Bar::foo
在有人问之前,对于-format
字符串中的函数转义符号,我已经尝试过%i
and %I
; 两者都生成了相同的裸骨函数名称。
有谁知道是否有一种神奇的格式转义来获得完全限定的名称?
从 PC-Lint-format
文档中:
%f = 文件名
(注意选项+ffn,代表“Full File Names”,可用于控制是否使用完整路径名)。
%l = 行号
%t = 消息类型(错误、警告等)
%n = 消息号
%m = 消息文本
%c = 列号
%C = 列号 +1
%i =调用函数
%% = 百分号%(...%) = 如果错误发生在文件中,则
有条件地包含由 ... 表示的信息。 \n = 换行符 \t = 制表符 \s = 空格 \a = 警报(变为 ASCII 7) \q = 引号 ( "" ) \ = 反斜杠 ( '\' )