--- Active Static Analysis Rules ---
 
  すべてのルール[I=85 PV=10 V=42 PSV=17 SV=60/active=214]
    組み込みルール[I=85 PV=10 V=42 PSV=17 SV=60/active=214]
      .NET Framework デザイン ガイドライン[I=85 PV=10 V=42 PSV=17 SV=60/active=214]
        名前付けのガイドライン[I=84 PV=2 V=29 PSV=1 SV=5/active=121]
          大文字と小文字の区別[I=0 PV=0 V=5 PSV=0 SV=0/active=5]
            * V: 大文字と小文字を区別しない名前空間
            * V: 大文字と小文字を区別しないパラメータ名
            * V: 大文字と小文字を区別しない型名
            * V: 文字と小文字を区別しないプロパティ名
            * V: 大文字と小文字を区別しないメソッド名
          大文字の使用のスタイル[I=28 PV=0 V=0 PSV=0 SV=0/active=28]
            * I: クラス名には Pascal 形式を使用する
            * I: 列挙型の名前には Pascal 形式を使用する
            * I: 列挙型の値の名前には Pascal 形式を使用する
            * I: イベント名には Pascal 形式を使用する
            * I: 例外クラス名には Pascal 形式を使用する
            * I: read-only の静的フィールド名には Pascal 形式を使用する
            * I: インターフェイス名には Pascal 形式を使用する
            * I: メソッド名には Pascal 形式を使用する
            * I: 名前空間の名前には Pascal 形式を使用する
            * I: プロパティ名には Pascal 形式を使用する
            * I: public インスタンス フィールド名には Pascal 形式を使用する
            * I: デリゲート型名には Pascal 形式を使用する
            * I: 構造体名には Pascal 形式を使用する
            * I: パラメータ名には Camel 形式を使用する
            * I: protected インスタンス フィールド名には Camel 形式を使用する
            * I: クラス名には大文字を使用する
            * I: 列挙型名には大文字を使用する
            * I: 列挙型の値名には大文字を使用する
            * I: イベント名には大文字を使用する
            * I: 例外クラス名には大文字を使用する
            * I: read-only の静的フィールド名には大文字を使用する
            * I: インターフェイス名には大文字を使用する
            * I: メソッド名には大文字を使用する
            * I: 名前空間の名前には大文字を使用する
            * I: プロパティ名には大文字を使用する
            * I: public インスタンス フィールド名には大文字を使用する
            * I: デリゲート型名には大文字を使用する
            * I: 構造体名には大文字を使用する
          単語の選択[I=0 PV=0 V=16 PSV=0 SV=0/active=16]
            * V: クラスに対する .NET 共通名の使用は避ける
            * V: 構造体に .NET 共通名を使うのは避ける
            * V: インターフェイスに .NET 共通名を使うのは避ける
            * V: 列挙に .NET 共通名を使うのは避ける
            * V: デリゲートに .NET 共通名を使うのは避ける
            * V: キーワードと競合するクラス名は避ける
            * V: キーワードと競合するデリゲート名は避ける
            * V: キーワードと競合する列挙名は避ける
            * V: キーワードと競合するインターフェイス名は避ける
            * V: キーワードと競合する構造体名は避ける
            * V: キーワードと競合する名前空間名は避ける
            * V: キーワードと競合するメソッド名は避ける
            * V: キーワードと競合するパラメータ名は避ける
            * V: キーワードと競合するフィールド名は避ける
            * V: キーワードと競合するプロパティ名は避ける
            * V: キーワードと競合するイベント名は避ける
          略語[I=33 PV=0 V=0 PSV=0 SV=0/active=33]
            * I: イベント名に略語を使うのは避ける
            * I: フィールド名に略語を使うのは避ける
            * I: メソッド名に略語を使うのは避ける
            * I: 名前空間の名前に略語を使うのは避ける
            * I: パラメータ名に略語を使うのは避ける
            * I: プロパティ名に略語を使うのは避ける
            * I: クラス名に略語を使うのは避ける
            * I: デリゲート名に略語を使うのは避ける
            * I: 列挙名に略語を使うのは避ける
            * I: インターフェイス名に略語を使うのは避ける
            * I: 構造体名に略語を使うのは避ける
            * I: よく知られた頭字語をクラス名で使用する
            * I: 有名な頭字語をデリゲート名で使用する
            * I: 有名な頭字語を列挙名で使用する
            * I: 有名な頭字語をイベント名で使用する
            * I: 有名な頭字語をフィールド名で使用する
            * I: 有名な頭字語をインターフェイス名で使用する
            * I: 有名な頭字語をメソッド名で使用する
            * I: 有名な頭字語を名前空間の名前で使用する
            * I: 有名な頭字語をパラメータ名で使用する
            * I: 有名な頭字語をプロパティ名で使用する
            * I: 有名な頭字語を構造体名で使用する
            * I: クラス名ではあいまいな頭字語を避ける
            * I: デリゲート名ではあいまいな頭字語を避ける
            * I: 列挙名ではあいまいな頭字語を避ける
            * I: イベント名ではあいまいな頭字語を避ける
            * I: フィールド名ではあいまいな頭字語を避ける
            * I: インターフェイス名ではあいまいな頭字語を避ける
            * I: メソッド名ではあいまいな頭字語を避ける
            * I: 名前空間の名前ではあいまいな頭字語を避ける
            * I: パラメータ名ではあいまいな頭字語を避ける
            * I: プロパティ名ではあいまいな頭字語を避ける
            * I: 構造体名ではあいまいな頭字語を避ける
          型名の混乱の回避[I=13 PV=0 V=0 PSV=0 SV=0/active=13]
            * I: 言語特有の名前をパラメータ名に使用しない
            * I: 言語特有の名前をメンバ名に使用しない
            * I: クラスでは一般的な名前を使用する
            * I: デリゲートでは一般的な名前を使用する
            * I: 列挙では一般的な名前を使用する
            * I: イベントでは一般的な名前を使用する
            * I: フィールドでは一般的な名前を使用する
            * I: インターフェイスでは一般的な名前を使用する
            * I: メソッドでは一般的な名前を使用する
            * I: 名前空間では一般的な名前を使用する
            * I: パラメータでは一般的な名前を使用する
            * I: プロパティでは一般的な名前を使用する
            * I: 構造体では一般的な名前を使用する
          名前空間の名前付け[I=0 PV=0 V=1 PSV=1 SV=0/active=2]
            * V: クラスと名前空間の名前の競合
            * PSV: ネストされた名前空間は、その元の名前空間の型に依存するべきである
          クラスの名前付け[I=3 PV=0 V=2 PSV=0 SV=0/active=5]
            * I: 'C' で開始するクラス名は避ける
            * I: クラス名ではアンダースコアを避ける
            * I: 'I' で開始するクラス名は避ける
            * V: 例外クラスは 'Exception' で終了すべきである
            * V: コレクション クラスは 'Collection' で終わるべきである
          インターフェイスの名前付け[I=1 PV=0 V=1 PSV=0 SV=0/active=2]
            * V: インターフェイス名は 'I' で開始する'
            * I: インターフェイス名ではアンダースコアの使用を避ける
          属性の名前付け[I=0 PV=0 V=1 PSV=0 SV=0/active=1]
            * V: 属性クラス名は 'Attribute' で終わるべきである
          列挙型の名前付け[I=3 PV=0 V=0 PSV=0 SV=1/active=4]
            * I: 列挙の最後には 'Enum' をつけない
            * I: ビット フィールドではない列挙には単数系の名前を使用する
            * I: ビット フィールドの列挙には複数形の名前を使用する
            * SV: ビット フィールドの列挙には Flags 属性を使用する
          静的フィールドの名前付け[I=1 PV=0 V=0 PSV=0 SV=1/active=2]
            * I: 静的フィールドではハンガリー表記を避ける
            * SV: public static フィールドではなく static プロパティを使用する
          パラメータの名前付け[I=1 PV=0 V=1 PSV=0 SV=0/active=2]
            * I: パラメータではハンガリー表記法を避ける
            * V: 記述的なパラメータ名を使用する
          プロパティの名前付け[I=1 PV=1 V=0 PSV=0 SV=0/active=2]
            * I: プロパティにハンガリー表記法を使用するのは避ける
            * PV: 型の名前と競合するプロパティ名
          イベントの名前付け[I=0 PV=1 V=2 PSV=0 SV=3/active=6]
            * V: イベント ハンドラ名は 'EventHandler' で終わるべきである
            * V: EventArgs クラスは 'EventArgs' で終わるべきである
            * SV: イベント ハンドラの適切なパラメータ
            * SV: Before/After 命名パターンの使用は避ける
            * PV: 接頭辞つきのイベント名の使用は避ける
            * SV: OnEvent メソッドを用意する
        クラス メンバの使用のガイドライン[I=1 PV=6 V=4 PSV=4 SV=22/active=37]
          プロパティの使用[I=0 PV=0 V=2 PSV=2 SV=7/active=11]
            * SV: 型名と同じプロパティ名は避ける
            * PSV: 関連するプロパティには ISupportInitialize を実装する
            * SV: コンポーネントに PropertyChanged イベントを用意する
            * SV: コンポーネントに RaisePropertyChanged メソッドを用意する
            * SV: コンポーネントに PropertyChanging イベントを用意する
            * V: プロパティ アクセサは避ける
            * PSV: 副作用のある get アクセサは使用しない
            * SV: 配列プロパティは避ける
            * V: write-only プロパティの使用は避ける
            * SV: インデックス付きプロパティは 1 つだけにする
            * SV: インデクサの名前は 'Item' にする
          イベントの使用[I=0 PV=2 V=1 PSV=0 SV=4/active=7]
            * PV: イベントではハンガリー表記法を避ける
            * SV: イベント ハンドラの戻り型に void を使用する
            * PV: イベント クラスは EventArgs を継承する
            * SV: イベントを public にする
            * SV: イベント アクセサ名は 'add' と 'remove' にする
            * V: 1 クラスあたりのイベント数が多すぎないようにする
            * SV: イベント起動を try ブロックに入れる
          メソッドの使用[I=1 PV=1 V=1 PSV=1 SV=3/active=7]
            * PV: メソッドではハンガリー表記法を避ける
            * SV: デフォルト引数は避ける
            * SV: VarArgs 呼び出し規約は使用しない
            * PSV: メソッド オーバーロードでは一貫した命名パターンを使用する
            * I: たくさんのパラメータではなく 1 つの配列を使用する
            * SV: もっとも完全なオーバーロードだけを virtual にする
            * V: エレメント数の少ない param オーバーロードのための特別なコード パス
          コンストラクタの使用[I=0 PV=1 V=0 PSV=0 SV=5/active=6]
            * SV: 静的クラスに private コンストラクタを用意する
            * SV: 処理の多いコンストラクタは避ける
            * SV: protected コンストラクタを用意する
            * SV: 空の構造体コンストラクタは避ける
            * SV: プロパティに相当するコンストラクタ パラメータ
            * PV: コンストラクタ オーバーロードには一貫した命名パターンを使用する
          フィールドの使用[I=0 PV=2 V=0 PSV=1 SV=3/active=6]
            * SV: public インスタンス フィールドは避ける
            * SV: protected インスタンス フィールドは避ける
            * SV: 定数プロパティは避ける
            * PV: インスタンス フィールドではハンガリー表記法を避ける
            * PV: 接頭辞のついたフィールドは避ける
            * PSV: 定義済みのインスタンス フィールドは public static readonly にする
        型の使用のガイドライン[I=0 PV=0 V=3 PSV=3 SV=12/active=18]
          基本クラスの使用[I=0 PV=0 V=0 PSV=1 SV=2/active=3]
            * SV: 抽象クラスの実装を用意する
            * PSV: テンプレート メソッドを使用する
            * SV: 抽象クラスで protected コンストラクタを定義する
          Sealed クラスの使用[I=0 PV=0 V=0 PSV=1 SV=1/active=2]
            * PSV: 継承の必要がない場合、sealed クラスを使用する
            * SV: 静的クラスを sealed にする
          構造体の使用[I=0 PV=0 V=0 PSV=0 SV=2/active=2]
            * SV: 大きな構造体は避ける
            * SV: 構造体のデフォルト コンストラクタを用意しない
          列挙の使用[I=0 PV=0 V=1 PSV=0 SV=5/active=6]
            * V: 静的定数ではなく列挙を使用する
            * SV: Int32 列挙を使用する
            * SV: 非整数の列挙は使用しない
            * SV: 列挙でのメソッド宣言は避ける
            * SV: 列挙でのプロパティ宣言は避ける
            * SV: 列挙でのイベント定義は避ける
          属性の使用[I=0 PV=0 V=2 PSV=0 SV=2/active=4]
            * SV: AttributeUsage を指定する
            * V: Attribute クラスは sealed にすべきである
            * SV: 同一の位置指定引数と名前付き引数は避ける
            * V: 引数とプロパティ名を大文字・小文字で区別する
          ネストされた型の使用[I=0 PV=0 V=0 PSV=1 SV=0/active=1]
            * PSV: ネストされたクラスを外部で使用するのは避ける
        COM のガイドライン[I=0 PV=0 V=1 PSV=4 SV=0/active=5]
          * V: アセンブリで ComVisibleAttribute を指定する
          * PSV: COM visible static メソッドは避ける
          * PSV: COM visible パラメータ付きコンストラクタは避ける
          * PSV: Disposable 型は参照でマーシャリングされる
          * PSV: システム リソース型は参照でマーシャリングされる
        エラーの発生と処理[I=0 PV=1 V=1 PSV=1 SV=1/active=4]
          * SV: 例外では共通コンストラクタを実装する
          * V: Exception クラスを継承してはいけない
          * PSV: 例外では追加情報を避ける
          * PV: 例外作成メソッドを使用する
        配列の使用のガイドライン[I=0 PV=0 V=0 PSV=1 SV=1/active=2]
          * SV: コレクション以外のクラスではインデクサを避ける
          * PSV: Collection は ICollection を実装すべきである
        演算子のオーバーロードの使用ガイドライン[I=0 PV=0 V=3 PSV=0 SV=10/active=13]
          * SV: 演算子の代替シグニチャを用意する
          * SV: 演算子は対称になるようにオーバーロードする
          * SV: Equals の実装では GetHashCode も実装する
          * SV: 演算子 == を実装するときは Equals も実装する
          * SV: IComparable を実装するときは Equals も実装する
          * V: IComparable を実装するときは比較演算子も実装する
          * SV: Equals から例外をスローするのは避ける
          * SV: GetHashCode から例外をスローするのは避ける
          * SV: 等号演算子で例外をスローしない
          * SV: 値型で == 演算子をオーバーロードする
          * V: 値型で Equals を実装する
          * SV: 参照型では等号演算子を避ける
          * V: 加算と減算を実装するときは、== も実装する
        型キャストのガイドライン[I=0 PV=0 V=0 PSV=0 SV=2/active=2]
          * SV: 分野が異なる型のキャストは避ける
          * SV: 非明示的なキャストで例外を使用しない
        共通のデザイン パターン[I=0 PV=1 V=1 PSV=3 SV=7/active=12]
          Finalize と Dispose の実装[I=0 PV=1 V=1 PSV=3 SV=7/active=12]
            * PSV: システム リソース型では Finalize を実装する
            * PSV: システム リソース型では IDisposable を実装する
            * SV: IDisposable の実装では Finalize も実装する
            * PV: Dispose メソッド名をカスタマイズする
            * SV: Finalize の実装では IDisposable も実装する
            * SV: public Finalize メソッドは避ける
            * SV: Finalize を直接呼び出さない
            * SV: base.Finalize メソッドを呼び出す
            * V: 基本クラスで IDisposable を実装する
            * PSV: Dispose の後に SupressFinalize を呼び出す
            * SV: base.Dispose メソッドを呼び出す
            * SV: Dispose で例外をスローするのは避ける