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
%I
完全修飾名を取得するための魔法の形式のエスケープがあるかどうかは誰にもわかりませんか?
PC-Lint の-format
ドキュメントから:
%f = ファイル名
("Full File Names" を表すオプション +ffn を使用して、フル パス名を使用するかどうかを制御できることに注意してください)。
%l = 行番号
%t = メッセージ タイプ (エラー、警告など)
%n = メッセージ番号
%m = メッセージ テキスト
%c = 列番号
%C = 列番号 +1
%i =呼び出し関数
%% = パーセント記号%(...%) = ファイル内でエラーが発生した場合、
条件付きで ... で示される情報を含めます。 \n = 改行 \t = タブ \s = スペース \a = アラーム (ASCII 7 になります) \q = 引用符 ( "" ) \ = バックスラッシュ ( '\' )