コードが分析され、マネージド コードのコード分析警告にあるような指摘を受けられます。
プロジェクトのプロパティの[コード分析]にあるルール セットで、コード分析での分析方法を指定します。該当するルール セットがないならば、[開く]から任意のコードを指定して分析できます。
規則セット | 内容 | 使用目的 | 定義ファイル ※1 |
---|---|---|---|
Microsoft マネージ最小規則 | コード分析が最も厳密に行われる、コードの最も重大な問題に関するもの
(規則は少数で、限られたVisual Studioエディションだけで使用されることが意図されている。他のVisual Studioエディションでは、MinimumRecommendedRules.rulesetを使用する) |
ManagedMinimumRules .ruleset |
|
Microsoft マネージ推奨規則 |
|
プロジェクトにカスタムの規則セットを作成する場合 (必ずこの規則セットを含める) | MinimumRecommendedRules .ruleset |
Microsoft 基本デザイン ガイドライン規則 | コードをわかりやすく、また使いやすくするためのベスト プラクティスに関するもの | プロジェクトにライブラリ コードが含まれる場合や、コードをメンテナンスしやすくするためにべスト プラクティスを適用する場合 | BasicDesignGuidelineRules .ruleset |
Microsoft 拡張デザイン ガイドライン規則 | 基本デザイン ガイドライン規則をさらに掘り下げて、 使用可能性と保守容易性に関する問題の検出範囲を最大化するためのもの |
プロジェクトにライブラリ コードが含まれる場合や、コード記述の方法に最高レベルの基準を適用してメンテナンスを容易にしたい場合
命名に関するガイドラインに重点が置かれている |
ExtendedDesignGuidelineRules .ruleset |
Microsoft 基本正確性規則 | フレームワークAPIの使用の際の論理エラー、およびよくある失敗に関するもの | 最小推奨規則で報告された警告の一覧から、さらに詳しい情報へと掘り下げる必要がある場合 | BasicCorrectnessRules .ruleset |
Microsoft 拡張正確性規則 | 正確性に関する基本的な規則をさらに掘り下げて、 論理エラーやフレームワーク使用エラーの検出範囲を最大化するためのもの |
COM 相互運用機能やモバイル アプリケーションなど、特定のシナリオに重点が置かれており、これらのシナリオのいずれかに該当するプロジェクトがある場合や、プロジェクト内の問題をさらに細かく探す必要がある場合 | ExtendedCorrectnessRules .ruleset |
Microsoft 混合 (C++ /CLR) 最小規則 | 共通言語ランタイムをサポートする C++ プロジェクトの最も重大な問題に関するもの
|
共通言語ランタイムをサポートするC++プロジェクトにカスタムの規則セットを作成する場合 (必ずこの規則セットを含める) | MixedMinimumRules .ruleset |
Microsoft 混合 (C++/CLR) 推奨規則 | 共通言語ランタイムをサポートする C++ プロジェクトの最も一般的で重大な問題に関するもの
|
共通言語ランタイムをサポートするC++プロジェクトにカスタムの規則セットを作成する場合 (必ずこの規則セットを含める)
(これはVisual Studio Professional Edition以上で構成するように設計されている) |
MixedRecommendedRules .ruleset |
Microsoft グローバリゼーション規則 | 複数の言語、ロケール、およびカルチャが使用される環境において、データの正しい表示を妨げる問題に対処する規則 | アプリケーションをローカライズまたはグローバル化する場合 | GlobalizationRules .ruleset |
Microsoft セキュリティ規則 | Microsoftのセキュリティ規則がすべて含まれる | セキュリティ問題の検出範囲を最大化する場合 | SecurityRules .ruleset |
Microsoft のすべての規則 | すべての規則が含まれる
(この規則セットを実行すると、多数の警告が報告される可能性がある) |
コード内のすべての問題を全体的に把握する場合
これは、用途を絞った各規則セットのうち、どれがプロジェクトに対して最も適切かを判断するのに役立つ |
AllRules .ruleset |
※1 分析の定義ファイルは%PROGRAMFILES(X86)%\Microsoft Visual Studio *.*\Team Tools\Static Analysis Tools\Rule Setsにあります。
分析結果がどの規則セットに属するかは、[エラー一覧]ウィンドウの[カテゴリ]列か、[出力]ウィンドウの内容から確認できます。
プロジェクトのプロパティを開き、[コード分析]にある[ビルドに対するコード分析の有効化]をチェックします。こうするとビルド時に自動でコード分析が実行されるようになります。方法: マネージ コードの自動コード分析を有効/無効にする | MSDN
ソリューション エクスプローラーでプロジェクトのコンテキストメニューを開き、[分析] → [コード分析の実行]から手動で実行できます。方法: マネージ コードについて手動でコード分析を実行する | MSDN
もしくはメニューの【分析 → ProjectName でコード分析を実行】からでも実行できます。
分析結果は、[出力]と[エラー一覧]ウィンドウに表示されます。
System.Collections.Generic.List<T>を返すことが問題視されます。
Dispose()が呼ばれない可能性があることが問題視されます。
そのオブジェクトがスコープ外では不要ならば、usingで生成するようにします。状況によって不要となるならば、finally句でDipose()を呼ぶようにします。
不要な警告は、SuppressMessage属性で抑制できます。 コード分析の違反を抑制する - Visual Studio (Windows) | Microsoft Learn Visual Studioのコード分析機能を利用してコードの品質を上げよう (2/3)|CodeZine(コードジン) 高野将 (2015/02/05) c# - How to disable specific Code Analysis Warning for entire class - Stack Overflow
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]