Skip to content

xclang-brain/coverity-triage-kit

v0.2.0MIT

Coverity Connect の警告をトリアージし、警告ごとに修正案と逸脱コメント案の両方を作るプラグイン(C / C++、標準・MISRA・CERT)。スキルや MCP サーバー1つ、作業エージェント1つ、一括のトリアージ、Web管理画面つき、の4つの段階で使える。

checker-knowledge

Coverity のチェッカー(NULL_RETURNS・RESOURCE_LEAK・OVERRUN などの標準チェッカー、MISRA C:2012 と MISRA C++ の規則、CERT C / C++ の規則)ごとに、何を指摘するか、誤検知になりやすい形、確かめ方、直し方の定石、逸脱コメントの言い方、判定の目安をまとめた資料。「MISRA 10.4 の警告はどう見ればいい?」「CERT ERR33-C は逸脱でいい?」「FORWARD_NULL でよくある誤検知は?」のように、チェッカーや規則の見方を聞かれたら、答える前に必ず使う。C / C++ の Coverity の警告を調べる・直す・逸脱コメントを書くときにも、チェッカー名に合う観点を確かめるために使う。

code-fix

Coverity の警告を直す修正案を、最小の変更で作る(外から見える仕様を変えない、新しい MISRA・CERT の違反を作らない、まわりの書き方に合わせる)。チャットでは差分を示し、同意を得てから作業中のファイルを直す。作業用のコピーのフォルダを渡されたときは、そのフォルダだけを直す。「この警告を直して」「CID 12345 の修正案を作って」「誤検知だけど警告が消えるように直したい」のように、C / C++ のコードの Coverity の警告を直す・修正の差分を作るよう頼まれたら、ファイルを変える前に必ず使う。最新のコードでもう直っているとき、決まりの中で直せないときの扱いも決めている。

coverity-apply

Coverity の警告のトリアージの実行で人が選んだ承認(実行フォルダの approvals.json の修正・逸脱・却下)を反映する。反映する件数・ID・影響を見せて同意を得てから、逸脱は Coverity にトリアージを書き戻す道具に計画のファイルと確認の文字列を渡し、修正は git ならブランチを push してプルリクエストの題名と本文(作成の URL)を用意し、svn なら作業コピーに差分を当てる。却下したグループの CID は、次の実行からグループにしないよう記録する。途中で失敗しても、もう一度使えば残りだけを反映する。「承認を反映して」「トリアージの結果を Coverity に登録して」「修正のプルリクエストを作って」「最新の実行を反映して」のように頼まれたときに使う。オプションで、知識の追記の案と、推奨が採られた割合の集計もする。

coverity-gui

Coverity の警告のトリアージの「結果と設定の画面」を開く。この PC のブラウザーで見るローカルの画面で、監視(一括のトリアージの実行中の AI の動き・止まっていそうな作業・重大なエラー)、結果(警告ごとの承認「修正・逸脱・却下・反映しない」の選択、逸脱コメントと Classification・Action・Severity の手直し、詳細レポート・差分・修正後のファイル)、設定(.coverity-triage/ の config.yaml・条件ファイル・knowledge.md・グループにしない CID、Windows では認証情報)の 3 つのタブがある。「結果の画面を開いて」「承認を選びたい」「逸脱コメントを直したい」「実行の様子を見せて」「設定を画面で直したい」「画面のサーバを止めて」と頼まれたとき、一括のトリアージを始めたとき(監視)と一覧ができたとき(結果)に使う。

coverity-help

Coverity Connect の警告のトリアージの道具一式について、使い方(4つの段階、チャットでの頼み方、画面、承認と反映、同じ原因の統合と結果の確かめ、オプション)、設定の項目、エラーや実行が止まったときの意味と直し方を、資料と点検のスクリプトで確かめて答える。結果と設定の画面を開き直すときにも使う。「このエラーは?」「HTTP 401 が出た」「実行が止まった」「MISRA だけ調べたい」「結果の置き場所を変えたい」「知識を追加したい」「画面を開いて」「どう使うの?」のように、困りごとや使い方を聞かれたときに使う。警告そのものの真偽の調査や修正、トリアージの実行や反映そのものには使わない。

coverity-run

Coverity Connect の警告のうち条件に合うものを一括でトリアージする手順と、その実行フォルダを扱うスクリプト。警告ごとに作業役のエージェントへ真偽の調査と修正案・逸脱コメント案を頼み、設定により検証役・統合役のエージェントへ確かめとまとめを頼んで、一覧 summary.html と承認の案 approvals.json を作る。次にすることはスクリプトの tick が決め、この手順はそれに従うだけにする。人がこのスキルをコマンドとして呼んだとき(条件の言い方「High だけ」「misra.yaml で 10 件だけ」「最初に解析して」「解析はしないで」「ビルドして確かめて」「前回の続きから」を添えて)、エージェントが実行フォルダとこのスクリプトの場所を渡されて一括の実行を進めるよう頼まれたとき、また、すでにある一括の実行について「進み具合は?」「一覧を作り直して」と頼まれたときに使う。コマンドとして呼ばれていない「警告をトリアージして」だけの頼みでは、新しい一括の実行を自分からは始めない。警告 1 件だけを調べる頼みや、承認したものの反映には使わない。

coverity-selftest

Coverity Connect の警告のトリアージの道具一式が、この PC(Copilot CLI か Claude Code、社内の Coverity、社内のビルド)で動くかを確かめ、結果を伏せ字の report.md にまとめる。範囲は ① 道具とエージェント ② 見本のリポジトリと偽の Coverity での一連の流れ(一括のトリアージと反映) ③ 社内の Coverity(読むだけ) ④ ビルドでの検証 の4つ。「自己診断して」「動作確認をして」「この PC で使えるか確かめて」「②だけ確かめて」「社内の Coverity につながるか確かめて」のように頼まれたときに使う。社内の Coverity には書き込まない。1件の警告の調査や、ふだんのトリアージの実行には使わない。

coverity-setup

Coverity Connect の警告をトリアージするための準備を、対話で1つずつ行う。リポジトリの設定(.coverity-triage/ の config.yaml・条件ファイル・knowledge.md)を作り、PC ごとの認証情報(ユーザー名と、伏せ字で入れる認証キー)を環境変数に保存する手順を示し、uv がなければ入れ方を示し、設定を確かめる。config.yaml の値は、人が書いた注釈を残して書き換える。ビルドでの検証・初回解析・統合と確かめなどのオプションも最後に設定する。「Coverity のトリアージの準備をして」「Coverity の設定ファイルを作って」「認証キーを登録したい」「config.yaml の max_items を変えて」「ビルドでの検証も使いたい」のように頼まれたとき、またはトリアージを始めようとして設定がないときに使う。何度使ってもよく、足りないものだけを補う。

coverity-triage-screen

Coverity Connect の警告の一括のトリアージを、ブラウザーの Web管理画面で始めるための入口。画面を開いて URL と注意を伝えるだけで、トリアージそのものは、利用者が画面で条件を選んで開始を押した後に、画面から始まるエージェントが行う。「Coverity の警告をトリアージして」「未処理の Coverity 警告を調べて修正案と逸脱コメントを作って」「High の Coverity 警告だけまとめて調べて」のように、条件に合う警告をまとめて調べてほしいと頼まれたときに使う(英語など、ほかの言葉の頼みでも同じ)。1件の警告(CID)を示して調べる・直す・逸脱コメントを書く・確かめる頼み、画面を使わずチャットだけで一括実行するコマンドをはっきり指定した頼み、準備、承認した結果の反映、使い方やエラーの質問、自己診断には使わない。

deviation-comment

Coverity の警告の逸脱コメント(直さない理由として Coverity に登録する200文字以内の短い文)を決まりに沿って書き、Classification・Action・Severity の案と一緒に返す。書いたコメントの形はスクリプトで確かめる。チャットで「この警告の逸脱コメントを書いて」「CID 12345 を逸脱にするコメントを考えて」「この逸脱コメントで大丈夫か見て」のように頼まれたとき、警告のトリアージで逸脱案を作るとき、まとめた警告の逸脱コメントを作るときに使う。Coverity に登録する逸脱コメントを書く・直すときは、短い文でも必ずこのスキルを使う。

triage-integration

調べ終わった Coverity の警告の結果をいくつか比べ、原因が1つのものだけを1つにまとめる計画(integration/plan.json の形。まとめる作業・理由・修正の作り方・まとめた結果・ぶつかる修正)を作り、スクリプトで決まりを確かめる。コードは変えない。チャットで「この3件、同じ原因ならまとめて」「この警告たちは同じ原因?」「同じマクロが原因の警告を1つにして」のように頼まれたとき、トリアージの結果を同じ原因でまとめるときに使う。いくつかの警告をまとめるかどうかを決めるときは、必ずこのスキルを使う。

triage-investigation

Coverity の警告1件(または同じ原因の数件)が本物のバグか誤検知かを、警告経路を呼び出し元や定義までコードでたどって調べ、判定(true_bug / false_positive / intentional / undetermined)・確信度・推奨(修正か逸脱か)と、根拠のファイルと行を返す。「CID 12345(NULL_RETURNS、src/foo.c の 120 行)の警告が本物か調べて」「この FORWARD_NULL は誤検知?」「issue-20001.json の警告を調べて、結果をこのファイルに書いて」のように、警告の真偽・確信度・推奨を求められたら、答える前に必ず使う。警告経路と前後のコードを ★ 付きで見やすく出すスクリプトもある。

triage-report

調べ終わった Coverity の警告1件(またはグループ1つ)の結果を、決まった項目(result.json の形。見立て・判定・推奨・確信度・根拠の場所・逸脱案・修正案・リビジョンのずれ)で書き、スクリプトで形と決まりを確かめる。result.json を読みやすい日本語の報告にもする。チャットで「調べた結果を決まった形で書いて」「この結果を result.json にして」「この result.json を確かめて」「この結果を説明して」のように頼まれたとき、警告のトリアージの結果をファイルに書くときに使う。結果を result.json の形で書くときは、必ずこのスキルを使う。

triage-review

別に調べた Coverity の警告の結果(判定・根拠の場所・確信度・修正の差分・逸脱コメント)を、自分でコードを読んで独立に確かめ、評価基準ごとの合否と、合格・要確認・差し戻しを返す。渡された結果と差分は変えない。決まった点を機械的に見つけるスクリプトと、確かめの結果(review.json)の形を確かめるスクリプトがある。チャットで「この結果を確かめて」「この判定は正しい?」「この修正案と逸脱コメントをレビューして」のように頼まれたとき、トリアージの結果を検証するときに使う。別の人やエージェントが出した Coverity の警告の結果の正しさを聞かれたら、必ずこのスキルを使う。