csharp-diagnose
Installation
SKILL.md
C# Code Diagnose
ReSharper CLI (jb inspectcode) と similarity-csharp で C# コードの品質と重複を診断する。
Workflow
1. プロジェクト種別を判定
以下の手がかりからプロジェクト種別を判定する:
- Unity:
ProjectSettings/ProjectVersion.txtが存在、または.asmdefファイルが存在 - .NET:
.csprojに<Project Sdk="Microsoft.NET.Sdk">等
2. 対象とオプションを決定
ユーザー指示があればそれに従う。なければ CLAUDE.md の jb セクションや --include / --exclude パターンを参照する。CLAUDE.md にも記載がなければ以下のデフォルトを使う。
Unity プロジェクトの場合:
--no-build必須(標準 MSBuild でビルドできない)-s=<solution>.sln.DotSettingsを付与(存在する場合。命名ルール等の設定反映に必要)--excludeでサードパーティを除外(**/TextMesh Pro/**等)Samples/や Unity 内部パッケージの警告は無視
通常の .NET プロジェクトの場合:
--no-buildは任意(ビルド済みなら付与)-sは DotSettings が存在する場合のみ
3. 両ツールを並列実行
# 静的解析(SARIF出力)
jb inspectcode <solution>.sln \
[--no-build] \
[-s=<solution>.sln.DotSettings] \
[--include="<pattern>"] \
[--exclude="<pattern>"] \
-e=WARNING \
-o=results.sarif
# 重複検出
similarity-csharp -p <paths> --threshold 0.8 --min-lines 5
両コマンドは独立しているので並列実行する。
4. 結果を解析
静的解析:
jq '.runs[0].results | length' results.sarif
jq '.runs[0].results[] | {ruleId, message: .message.text, uri: .locations[0].physicalLocation.artifactLocation.uri, line: .locations[0].physicalLocation.region.startLine}' results.sarif
重複検出: コンソール出力をそのまま読み取る。
5. 統合レポート
以下の構成で報告する:
## 診断結果サマリー
| 項目 | 件数 |
|------|------|
| 静的解析 WARNING | N件 |
| 重複グループ | N件 |
| 重複行数 | N行 |
## 静的解析(ReSharper)
- 各警告をファイル:行番号付きで列挙
## 重複コード(similarity-csharp)
- 各グループの類似度・行数・該当メソッド名を列挙
- 共通化の提案(抽象化・ジェネリクス・委譲等)
## 改善提案
- 優先度順に具体的なリファクタリング方針を提示
6. クリーンアップ
results.sarif を削除する。
オプション調整
詳細は references/tool-options.md を参照。
よく使う調整:
- 閾値を緩めて広く検出:
--threshold 0.7 - 大きなメソッドを除外:
--max-lines 100 - 特定ディレクトリのみ:
-p src/Domain src/Application - ReSharper で INFO も含める:
-e=INFO
Related skills