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>

ご覧のとおり、関数名はfooBar::foo私が望む/期待するものとは異なります。

誰かが尋ねる前に、文字列内の関数エスケープ記号について、私はと;-formatの両方を試しました。両方とも同じ必要最小限の関数名を生成しました。%i%I

完全修飾名を取得するための魔法の形式のエスケープがあるかどうかは誰にもわかりませんか?


PC-Lint の-formatドキュメントから:

%f = ファイル名
("Full File Names" を表すオプション +ffn を使用して、フル パス名を使用するかどうかを制御できることに注意してください)。
%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 に答える