ルール違反ストリングのフォーマット

デフォルトでメッセージは、ルール違反の指定子(つまり、 %G, %K, %M, %r, %v と %z 指定子など)は、  --format 出力ストリングにより診断と共に出力されます。

複数のルール違反がある場合、各フィールドが出力され、その出力の各ルールはカンマで区切られます。この方法では、複数のルール違反と複数のルール指定子があるときに混乱が生じる恐れがあります。

そこで、新しい --rule-format が追加されました。

このフォーマットストリングを指定すると、最初に診断情報が出力され、それから各ルール違反が続きます。--rule-format オプションのルール特有のフィールドがそれから出力されます。

これにより、各違反に対するすべてのルール特有の情報が一緒に出力されるようになりました。

--rule-format ストリングでは以下の指定子のみが使用可能です。

指定子 詳しい説明

%G

親ルールID

%K ルールカテゴリ 1
%M ルールグループ名と最下位の子ルールID(s)

%r

親ルールIDを除く最下位の子ルールID (親ルールIDについては%Gを参照)

%v

ルールID と テキスト ( --rules セットが必須)

%z

ルールヘルプファイル(絶対パス)

1 各個々の要素は '|' (縦棒) で区切られています。

これらはサポートされている唯一の使用可能な指定子です。


分かりにくい出力が生成されるため、 --format オプション、--rule-format での使用が推奨されないルール指定子がいくつかあります。

例えば、基本的な診断と、ルール違反の出力を違う行に表示するには、以下のようなコマンドを使用します。

qacli view -P . -t DIAGLST -m STDOUT --format "%f:%l:%c %N\n" --rule-format "-->%M Categories:%K\n" 

これの出力は以下です。

inspect.c:2:1 2887
-->M3CM Rule-17.4 Categories:MISRA Mandatory Rules|Mandatory|Rules|Functions

inspect.c:9:3 3114
-->M3CM Rule-17.4 Categories:MISRA Mandatory Rules|Mandatory|Rules|Functions
-->M3CM Rule-1.3 Categories:MISRA Required Rules|Required|Rules|A standard C environment