2

我正在使用 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字符串中的函数转义符号,我已经尝试过%iand %I; 两者都生成了相同的裸骨函数名称。

有谁知道是否有一种神奇的格式转义来获得完全限定的名称?


从 PC-Lint-format文档中:

%f = 文件名
(注意选项+ffn,代表“Full File Names”,可用于控制是否使用完整路径名)。
%l = 行号
%t = 消息类型(错误、警告等)
%n = 消息号
%m = 消息文本
%c = 列号
%C = 列号 +1
%i =调用函数
%% = 百分号%(...%) = 如果错误发生在文件中,则
有条件地包含由 ... 表示的信息。 \n = 换行符 \t = 制表符 \s = 空格 \a = 警报(变为 ASCII 7) \q = 引号 ( "" ) \ = 反斜杠 ( '\' )







4

1 回答 1

0

对您来说可能为时已晚:) 但有一个标志ffn (在消息中使用完整文件名)

您可以将其添加到主 lnt 文件中

+ffn

https://www.gimpel.com/archive/lint7.htm

于 2021-04-27T17:54:27.380 回答