はじめに
C#使いですが.net10にはまだ適応できておりません。
最近は昨今のDXの波にあやかって、業務改善アプリなどを開発しています。
それら業務において、あるといいなを形にしたC#用の静的アナライザー(CSharp_IngeniousAnalyzer)をNuGetで公開したところ、ありがたいことにダウンロード数が2,900を超えました。
わずか2ヶ月程度で、こんなにダウンロードされるなんて思っていませんでした。
……ただ、心の中ではこう思っています。
「これってボットのダウンロードだけで、どうせ実際には誰も使っていないんでしょ?」
ということで、もしも、このアナライザーを実際に使ったことがある方、ぜひじっくり感想やフィードバックを聞かせていただきたいです。
ボロクソに言っていただいて結構ですので、ぜひご意見をお願いいたします。
開発のコンセプト
社内や個人開発の中で、「こういうコードのミスや非効率な書き方を、もっと自動で検知できたらいいのに」と感じたのが開発のきっかけです。
このアナライザーでは、以下の方針を大切にしています。
- ローカルルールに特化しない: チーム固有の厳しすぎるルールではなく、一般的な現場で役立つ「浅く広い」検知を目指す
- Fix(自動修正)まで提供できるのが強み: 単に警告を出すだけでなく、修正までサポートする
- 開発環境を問わない: Visual Studioはもちろん、VSCodeでも動作し、コードアクションによるFixまでしっかり確認できている
ここが便利!アピールポイント
1. 修正(Fix)までワンストップ
警告を検知するだけでなく、クイックフィックスでそのまま修正コードに置き換えることができます。この「Fixまで完結する」という点が、日々のコーディング負荷を大きく下げてくれます。
COMM002の例
警告
クイックフィックスから、Fixを選択
クイックフィックス 完了後(関数と関数ヘッダのパラメータが一致し、警告の波線が消えている)
2. VSをはじめ、VSCodeでも快適に動く
Visual StudioであればRoslynを通じてソリューション単位やプロジェクト単位への反映が一度に済みます。
VSCode環境でも問題なく動作し、Fixの適用まで確認済みです。
普段VSCodeをメインにC#を書いている方にもそのまま導入していただけます。
3. レガシーコードへの配慮(Ignore機能)
「既存のレガシーコードにいきなり適用して大量の警告が出たらどうしよう…」という懸念に対して、修正が難しい箇所はコメントを追加して警告対象外(Ignore)にできるため、段階的な導入が可能です。
CPX001の例
警告
クイックフィックスから、Fixを選択
クイックフィックス 完了後(関数先頭にIgnoreがコメントされ、警告の波線が消えている)
実際に数十万行の業務プロジェクトで試した結果
実際に、数十万行規模・クラス数100を超える実際の業務プロジェクトにこのアナライザーを導入してみました。
- 結果: わずか2時間程度の作業で、すべての警告を0件にすることが出来ました!
-
導入後の変化:
- 自己レビューの精度が自然と上がり、コードレビューの際に細かい書き方の指摘(不毛な指摘)がなくなった
おわりに
……と、ここまで自分で語ってみたものの、やっぱり「本当にどこかの誰かの役に立っているのか?」とドキドキしています。
プログラマにもレビューアにとっても有益なアナライザーを目指して作っています。
実際に使ってみた感想や、「こういうルールがほしい」「ここが使いにくい」といったフィードバックがあれば、ぜひこの記事のコメント欄や、GitHubのIssues、NuGetのリンクからお気軽にお知らせください!
みなさんと一緒にこのアナライザーを育てていきたいと思っています。
- Qiita: 記事へのコメント(お気軽にどうぞ!)
- NuGet: CSharp_IngeniousAnalyzer
- GitHub: GitHubリポジトリ





