-
Notifications
You must be signed in to change notification settings - Fork 0
MS_StyleCop
- 戻る(テスティング・フレームワーク)
-
C# のコーディング内容をチェックするオープンソースのツール
-
Microsoft の内部にて使用されていたツールが、
- 2008 年に MSDN Code(MSDN Archive)にて無償公開
- 2010 年に CodePlex にてオープンソース公開
-
以下のような内容をチェックできる。
- ヘッダーの設定
- 命令やクエリ句の書き方
- 行間の空行の数
- フィールド、変数、メソッド等の命名規約
- 括弧の配置、記法
- キーワードや括弧前後のスペース
- クラス内の順序(Public → Protected など)
- 使用する型やクラスの指定(
Stringでなくstring、""ではなくString.Empty等)
-
Visual Studioと統合されているが、Express Edition の場合、
アドオンが許可されていないため、ビルド プロセス(MSBuild) と統合する必要がある。
移行メモ(元ページ名の誤字): 元ページのタイトルは
「StyelCop」(yとlが入れ替わった綴り)となっていたが、
正しくは StyleCop であるため、
本ページではファイル名・タイトルとも修正して掲載した。
本文中の FxCopページからの参照も同様。
補足(FxCop との役割の違い): 名前が似ているが、
見ているものが根本的に違う。
StyleCop FxCop 分析対象 ソースコード(テキスト) ビルド後のアセンブリ(IL) 観点 書式・スタイル(読みやすさ) 設計・実装の正しさ 例 インデント、空行、 usingの順序破棄漏れ、例外の投げ方、命名規約 直し方 機械的に修正できるものが多い 設計判断を伴うことがある 「読める」を担保するのが StyleCop、
「正しい」を担保するのが FxCop、という分担である。
補足(最新化:StyleCop.Analyzers へ): 元ページが扱っている
StyleCop(VS アドイン + MSBuild タスク)は開発が終了しており、
現在は StyleCop.Analyzers(Roslyn アナライザ)に置き換わっている。dotnet add package StyleCop.AnalyzersRoslyn アナライザになったことで、以下が変わった。
旧 StyleCop StyleCop.Analyzers 実行 別プロセス(VS アドイン / MSBuild タスク) コンパイラに統合。入力中にリアルタイム警告 対象 Windows / VS 依存 クロスプラットフォーム( dotnet buildで動く)設定 Settings.StyleCop(JSON)stylecop.json+.editorconfig自動修正 限定的 Code Fix でまとめて修正可能 設定の運用は、
.editorconfigに規則の重大度(error/warning/none)を書く- リポジトリ ルートに置いてチーム全体で共有する
dotnet formatで一括整形するという形が現在の標準である。
CI でTreatWarningsAsErrorsと併用すれば、
書式違反をビルド失敗として弾ける(ビルド)。
補足(ルールは必ず取捨選択する): StyleCop の既定ルールには、
SA1600(すべての要素に XML ドキュメント コメントを要求)のように
そのまま適用すると現実的でないものが含まれる。
FxCopの「アドバイスを盲目的に適用するのは危険」と同じで、
プロジェクトの方針に合わせて.editorconfigで無効化するのが前提である。
- StyleCop(C# のコードスタイルチェック)| ネスケラボ
https://blog.nextscape.net/research/dotnetenv/stylecop - StyleCop.Analyzers(GitHub)
https://github.com/DotNetAnalyzers/StyleCopAnalyzers - .editorconfig によるコード スタイルの設定 | Microsoft Learn
https://learn.microsoft.com/ja-jp/dotnet/fundamentals/code-analysis/code-style-rule-options
Jenkins構築手順(MS_JenkinsSetup.md)
Tags: 移行, テスト, デバッグ, .NET開発, ツール類, ドキュメンテーション, CI
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。