Meziantou.Analyzer
2.0.183
デザイン、使用、セキュリティ、パフォーマンス、スタイルの観点から、C#でいくつかの優れたプラクティスを実施するRoslynアナライザー。
Nugetパッケージhttps://www.nuget.org/packages/meziantou.analyzer/をインストールする
すでに他のアナライザーを使用している場合は、よく知られているアナライザーで複製されているルールを確認できます
| id | カテゴリ | 説明 | 重大度 | 有効です | コード修正 |
|---|---|---|---|---|---|
| MA0001 | 使用法 | StringComparisonがありません | ✔✔️ | ✔✔️ | |
| MA0002 | 使用法 | iequalitycomparer <string>またはicomparer <string>が欠落しています | ✔✔️ | ✔✔️ | |
| MA0003 | スタイル | パラメーター名を追加して、読みやすさを向上させます | ✔✔️ | ✔✔️ | |
| MA0004 | 使用法 | task.configureAwaitを使用します | ✔✔️ | ✔✔️ | |
| MA0005 | パフォーマンス | array.empty <t>()を使用します | ✔✔️ | ✔✔️ | |
| MA0006 | 使用法 | 平等演算子の代わりにstring.equalsを使用します | ✔✔️ | ✔✔️ | |
| MA0007 | スタイル | 最後の値の後にコンマを追加します | ✔✔️ | ✔✔️ | |
| MA0008 | パフォーマンス | structlayoutattributeを追加します | ✔✔️ | ✔✔️ | |
| MA0009 | 安全 | 正規表現評価タイムアウトを追加します | ✔✔️ | ||
| MA0010 | デザイン | 属性属性をマークします | ✔✔️ | ✔✔️ | |
| MA0011 | 使用法 | iformatproviderがありません | ✔✔️ | ||
| MA0012 | デザイン | 予約された例外タイプを上げないでください | ✔✔️ | ||
| MA0013 | デザイン | タイプはSystem.ApplicationExceptionを拡張してはなりません | ✔✔️ | ||
| MA0014 | デザイン | System.ApplicationExceptionタイプを上げないでください | ✔✔️ | ||
| MA0015 | 使用法 | argumentExceptionでパラメーター名を指定します | ✔✔️ | ||
| MA0016 | デザイン | 実装の代わりにコレクションの抽象化を使用することを好みます | ✔✔️ | ||
| MA0017 | デザイン | 抽象タイプには、パブリックコンストラクターや内部コンストラクターが必要です | ✔✔️ | ✔✔️ | |
| MA0018 | デザイン | 一般的なタイプで静的メンバーを宣言しないでください(代わりにCA1000を使用してください) | ✔✔️ | ||
| MA0019 | 使用法 | eventargs.emptyを使用してください | ✔✔️ | ✔✔️ | |
| MA0020 | パフォーマンス | LINQメソッドの代わりに直接的な方法を使用します | ✔✔️ | ✔✔️ | |
| MA0021 | 使用法 | string.gethashcodeの代わりにstringcomparer.gethashcodeを使用します | ✔✔️ | ✔✔️ | |
| MA0022 | デザイン | nullを返す代わりに、return task.fromresult | ✔✔️ | ✔✔️ | |
| MA0023 | パフォーマンス | regexoptions.explicitcaptureを追加します | ✔✔️ | ||
| MA0024 | 使用法 | 可能な場合は、明示的なStringCompererを使用します | ✔✔️ | ✔✔️ | |
| MA0025 | デザイン | notimplementedexceptionをスローする代わりに機能を実装します | ✔✔️ | ||
| MA0026 | デザイン | todoコメントを修正します | ✔✔️ | ||
| MA0027 | 使用法 | 暗黙的に例外をre延することを好む | ✔✔️ | ✔✔️ | |
| MA0028 | パフォーマンス | StringBuilderの使用法を最適化します | ✔✔️ | ✔✔️ | |
| MA0029 | パフォーマンス | LINQメソッドを組み合わせます | ✔✔️ | ✔✔️ | |
| MA0030 | パフォーマンス | 役に立たないOrderby通話を削除します | ✔✔️ | ✔✔️ | |
| MA0031 | パフォーマンス | eNumerable.count()usageを最適化します | ✔✔️ | ✔✔️ | |
| MA0032 | 使用法 | キャンセルトークン引数で過負荷を使用します | |||
| MA0033 | デザイン | スレッドスタティックアトリブを使用してインスタンスフィールドにタグを付けないでください | ✔✔️ | ||
| MA0035 | 使用法 | 危険なスレッド化方法を使用しないでください | ✔✔️ | ||
| MA0036 | デザイン | クラスを静的にします | ✔✔️ | ✔✔️ | |
| MA0037 | 使用法 | 空のステートメントを削除します | ✔✔️ | ✔✔️ | |
| MA0038 | デザイン | メソッドを静的にします(代わりにCA1822を使用します) | ✔✔️ | ✔✔️ | |
| MA0039 | 安全 | 独自の証明書検証方法を記述しないでください | ✔✔️ | ||
| MA0040 | 使用法 | キャンセルトークンパラメーターを1つを取るメソッドに転送します | ✔✔️ | ✔✔️ | |
| MA0041 | デザイン | プロパティを静的にします(代わりにCA1822を使用してください) | ✔✔️ | ✔✔️ | |
| MA0042 | デザイン | 非同期メソッドでブロッキングコールを使用しないでください | ✔✔️ | ✔✔️ | |
| MA0043 | 使用法 | argumentExceptionでnameofオペレーターを使用します | ✔✔️ | ✔✔️ | |
| MA0044 | パフォーマンス | 役に立たないトストリングコールを削除します | ✔✔️ | ✔✔️ | |
| MA0045 | デザイン | 同期メソッドでブロッキングコールを使用しないでください(呼び出しメソッドをASYNCにする必要があります) | ✔✔️ | ||
| MA0046 | デザイン | EventHandler <t>を使用して、イベントを宣言します | ✔✔️ | ||
| MA0047 | デザイン | 名前空間でタイプを宣言します | ✔✔️ | ||
| MA0048 | デザイン | ファイル名はタイプ名と一致する必要があります | ✔✔️ | ||
| MA0049 | デザイン | タイプ名は、名前空間を含むものと一致しないはずです | ✔✔️ | ||
| MA0050 | デザイン | イテレータメソッドで引数を正しく検証します | ✔✔️ | ✔✔️ | |
| MA0051 | デザイン | 方法が長すぎます | ✔✔️ | ||
| MA0052 | パフォーマンス | 定数enum.tostringをnameofに置き換えます | ✔✔️ | ✔✔️ | |
| MA0053 | デザイン | クラスを密閉します | ✔✔️ | ✔✔️ | |
| MA0054 | デザイン | キャッチされた例外をInnerexceptionとして埋め込みました | ✔✔️ | ||
| MA0055 | デザイン | ファイナルライザーを使用しないでください | ✔✔️ | ||
| MA0056 | デザイン | コンストラクターの過剰なメンバーに電話しないでください | ✔✔️ | ||
| MA0057 | ネーミング | クラス名は「属性」で終了する必要があります | ✔✔️ | ||
| MA0058 | ネーミング | クラス名は「例外」で終了するはずです | ✔✔️ | ||
| MA0059 | ネーミング | クラス名は「eventargs」で終わる必要があります | ✔✔️ | ||
| MA0060 | デザイン | stream.read/stream.readasyncによって返される値は使用されません | ✔✔️ | ||
| MA0061 | デザイン | メソッドオーバーライドはデフォルト値を変更してはなりません | ✔✔️ | ✔✔️ | |
| MA0062 | デザイン | 非フラグの列挙には「FlagSattribute」とマークされるべきではありません | ✔✔️ | ||
| MA0063 | パフォーマンス | Orderbyの前にWhereを使用してください | ✔✔️ | ||
| MA0064 | デザイン | 公開可能なインスタンスでのロックを避けてください | ✔✔️ | ||
| MA0065 | パフォーマンス | デフォルトのValueType.equalsまたはHashCodeは、structの等式に使用されます | ✔✔️ | ||
| MA0066 | パフォーマンス | ハッシュテーブル非友好的なタイプはハッシュテーブルで使用されます | ✔✔️ | ||
| MA0067 | デザイン | GUID.EMPTYを使用します | ✔✔️ | ✔✔️ | |
| MA0068 | デザイン | Nullable属性の無効なパラメーター名 | ✔✔️ | ||
| MA0069 | デザイン | 非定常静的フィールドが表示されないはずです | ✔✔️ | ||
| MA0070 | デザイン | 時代遅れの属性には説明を含める必要があります | ✔✔️ | ||
| MA0071 | スタイル | 他の冗長性の使用は避けてください | ✔✔️ | ✔✔️ | |
| MA0072 | デザイン | 最終的なブロックから投げないでください | ✔✔️ | ||
| MA0073 | スタイル | ブール定数との比較は避けてください | ✔✔️ | ✔✔️ | |
| MA0074 | 使用法 | 暗黙の文化に敏感な方法を避けてください | ✔✔️ | ✔✔️ | |
| MA0075 | デザイン | 暗黙の文化に敏感なTostringを使用しないでください | ✔✔️ | ||
| MA0076 | デザイン | 補間された弦で暗黙の文化に敏感なトストリングを使用しないでください | ✔✔️ | ||
| MA0077 | デザイン | Equals(t)を提供するクラスは、i quatable <t>を実装する必要があります | ✔✔️ | ✔✔️ | |
| MA0078 | パフォーマンス | 「select」の代わりに「cast」を使用してキャストします | ✔✔️ | ✔✔️ | |
| MA0079 | 使用法 | .withcancellation()を使用してキャンセルトークンを転送します | ✔✔️ | ✔✔️ | |
| MA0080 | 使用法 | .withcancellation()を使用してキャンセルトークンを使用します | |||
| MA0081 | デザイン | メソッドオーバーライドは、paramsキーワードを省略しないでください | ✔✔️ | ✔✔️ | |
| MA0082 | デザイン | NANは比較で使用しないでください | ✔✔️ | ||
| MA0083 | デザイン | コンストラクターには、コンストラクターに存在する必要があります | ✔✔️ | ||
| MA0084 | デザイン | ローカル変数は他のシンボルを非表示にしないでください | ✔✔️ | ||
| MA0085 | 使用法 | 匿名の代表者は、イベントからの登録解除に使用しないでください | ✔✔️ | ||
| MA0086 | デザイン | ファイナルイザーから投げないでください | ✔✔️ | ||
| MA0087 | デザイン | [DefaultParametervalue]属性を持つパラメーターもマークする必要があります[オプション] | ✔✔️ | ||
| MA0088 | デザイン | [defaultValue]の代わりに[defaultparametervalue]を使用します | ✔✔️ | ||
| MA0089 | パフォーマンス | 文字列メソッドの使用法を最適化します | ✔✔️ | ✔✔️ | |
| MA0090 | デザイン | 空の除去/最後にブロックを削除します | ✔✔️ | ||
| MA0091 | 使用法 | 送信者は、たとえばイベントなどの「これ」でなければなりません | ✔✔️ | ✔✔️ | |
| MA0092 | 使用法 | 送信者は、静的イベントの「ヌル」でなければなりません | ✔✔️ | ||
| MA0093 | 使用法 | eventargsはヌルではありません | ✔✔️ | ✔✔️ | |
| MA0094 | デザイン | 比較(t)を提供するクラスは、icomparable <t>を実装する必要があります | ✔✔️ | ||
| MA0095 | デザイン | equatable <t>を実装するクラスは、等しい(オブジェクト)をオーバーライドする必要があります | ✔✔️ | ||
| MA0096 | デザイン | icomparable <t>を実装するクラスは、iequatable <t>も実装する必要があります | ✔✔️ | ||
| MA0097 | デザイン | icomparable <t>またはicomparableを実装するクラスは、比較演算子を上書きする必要があります | ✔✔️ | ||
| MA0098 | パフォーマンス | LINQメソッドの代わりにインデクサーを使用します | ✔✔️ | ✔✔️ | |
| MA0099 | 使用法 | 0の代わりに明示的な列挙値を使用します | ✔✔️ | ||
| MA0100 | 使用法 | リソースを処分する前にタスクを待ってください | ✔✔️ | ||
| MA0101 | 使用法 | 文字列には、ライン文字の暗黙の端が含まれています | ? | ✔✔️ | ✔✔️ |
| MA0102 | デザイン | メンバーを読み取ります | ✔✔️ | ✔✔️ | |
| MA0103 | 使用法 | 平等演算子の代わりにシーケンス等しい使用を使用します | ✔✔️ | ✔✔️ | |
| MA0104 | デザイン | BCLから名前を持つタイプを作成しないでください | |||
| MA0105 | パフォーマンス | 閉鎖を使用する代わりに、ラムダパラメーターを使用します | ✔✔️ | ||
| MA0106 | パフォーマンス | 「FactoryArgument」パラメーターで過負荷を使用して閉鎖を避けてください | ✔✔️ | ||
| MA0107 | デザイン | 文化に敏感なオブジェクトを使用しないでください | |||
| MA0108 | 使用法 | 冗長な引数値を削除します | ✔✔️ | ✔✔️ | |
| MA0109 | デザイン | スパン<t>またはメモリ<t>で過負荷を追加することを検討してください | |||
| MA0110 | パフォーマンス | Regexソースジェネレーターを使用します | ✔✔️ | ✔✔️ | |
| MA0111 | パフォーマンス | formattablestringの代わりにstring.createを使用します | ✔✔️ | ✔✔️ | |
| MA0112 | パフォーマンス | 「any()」の代わりに「count> 0」を使用します | |||
| MA0113 | デザイン | DateTime.unixePochを使用します | ✔✔️ | ✔✔️ | |
| MA0114 | デザイン | DateTimeOffset.unixePochを使用します | ✔✔️ | ✔✔️ | |
| MA0115 | 使用法 | 不明なコンポーネントパラメーター | ✔✔️ | ||
| MA0116 | デザイン | [supplyparameterfromquery]属性を持つパラメーターも[パラメーター]としてマークする必要があります | ✔✔️ | ✔✔️ | |
| MA0117 | デザイン | [editorRequired]属性を持つパラメーターも[パラメーター]としてマークする必要があります | ✔✔️ | ✔✔️ | |
| MA0118 | デザイン | [jsinvokable]方法は公開されている必要があります | ✔✔️ | ||
| MA0119 | デザイン | jsruntimeは、初期化またはonitializedasyncで使用してはなりません | ✔✔️ | ||
| MA0120 | パフォーマンス | 返された値が使用されていない場合は、invokevoidasyncを使用します | ✔✔️ | ✔✔️ | |
| MA0121 | デザイン | パラメーター値を上書きしないでください | |||
| MA0122 | デザイン | [supplyparameterfromquery]属性を持つパラメーターは、ルーティング可能なコンポーネント(@page)でのみ有効です | ✔✔️ | ||
| MA0123 | デザイン | シーケンス番号は定数でなければなりません | ✔✔️ | ||
| MA0124 | デザイン | ログパラメータータイプは無効です | ✔✔️ | ||
| MA0125 | デザイン | ログパラメータータイプのリストには無効なタイプが含まれています | ✔✔️ | ||
| MA0126 | デザイン | ログパラメータータイプのリストには、複製が含まれています | ✔✔️ | ||
| MA0127 | 使用法 | ISパターンではなく、string.equalsを使用します | |||
| MA0128 | 使用法 | シーケンス等式の代わりに「IS」オペレーターを使用します | ✔✔️ | ✔✔️ | |
| MA0129 | 使用法 | ステートメントを使用する際のタスクを待っています | ✔✔️ | ||
| MA0130 | 使用法 | getType()はSystem.Typeインスタンスで使用しないでください | ✔✔️ | ||
| MA0131 | 使用法 | argumpnullexception.throwifnullは、非脆弱な型では使用しないでください | ✔✔️ | ||
| MA0132 | デザイン | DatetimeOffsetに暗黙的に変換しないでください | ✔✔️ | ||
| MA0133 | デザイン | 暗黙の変換に依存する代わりに、DateTimeOffsetを使用します | ✔✔️ | ||
| MA0134 | 使用法 | 非同期呼び出しの結果を観察します | ✔✔️ | ||
| MA0135 | デザイン | ログパラメーターには、構成されたタイプがありません | |||
| MA0136 | 使用法 | Raw Stringには、暗黙の端の文字が含まれています | ? | ✔✔️ | |
| MA0137 | デザイン | メソッドがお気に入りのタイプを返すときに「async」サフィックスを使用します | |||
| MA0138 | デザイン | メソッドがお気に入りのタイプを返さない場合、「非同期」の接尾辞を使用しないでください | |||
| MA0139 | デザイン | ログパラメータータイプは無効です | ✔✔️ | ||
| MA0140 | デザイン | ifとelseの両方のブランチには、同一のコードがあります | ✔✔️ | ||
| MA0141 | 使用法 | nullチェックに不平等演算子の代わりにパターンマッチングを使用する | ✔✔️ | ||
| MA0142 | 使用法 | nullチェックのために平等オペレーターの代わりにパターンマッチングを使用する | ✔✔️ | ||
| MA0143 | デザイン | プライマリコンストラクターパラメーターは読み取る必要があります | ✔✔️ | ||
| MA0144 | パフォーマンス | System.operatingsystemを使用して、現在のOSを確認します | ✔✔️ | ||
| MA0145 | 使用法 | [unsafeaccessorattribute]メソッドの署名は無効です | ✔✔️ | ||
| MA0146 | 使用法 | 名前は、ローカル機能で明示的に設定する必要があります | ✔✔️ | ||
| MA0147 | 使用法 | 委任のためのAsync voidメソッドを避けてください | ✔✔️ | ||
| MA0148 | 使用法 | 個別の値のために、等式演算子の代わりにパターンマッチングを使用する | ✔✔️ | ||
| MA0149 | 使用法 | 不平等演算子の代わりにパターンマッチングを使用して、個別の値に | ✔✔️ | ||
| MA0150 | デザイン | デフォルトのオブジェクトを明示的に呼び出さないでください | ✔✔️ | ||
| MA0151 | 使用法 | DebuggerDisplayには有効なメンバーが含まれている必要があります | ✔✔️ | ||
| MA0152 | パフォーマンス | 待ち望みを2回使用する代わりにUNWRAPを使用します | ✔✔️ | ||
| MA0153 | デザイン | DataClassificationAttributeで装飾された記号を直接記録しないでください | ✔✔️ | ||
| MA0154 | デザイン | XMLコメントでLangwordを使用してください | ✔✔️ | ✔✔️ | |
| MA0155 | デザイン | async voidメソッドを使用しないでください | |||
| MA0156 | デザイン | メソッドがiasyncenumerable <t>を返す場合、「async」サフィックスを使用します | |||
| MA0157 | デザイン | メソッドがiasyncenumerable <t>を返さない場合は、「非同期」の接尾辞を使用しないでください | |||
| MA0158 | パフォーマンス | System.threading.lockを使用します | ✔✔️ | ||
| MA0159 | パフォーマンス | 「Orderby」の代わりに「注文」を使用する | ✔✔️ | ✔✔️ | |
| MA0160 | パフォーマンス | trygetValueの代わりにContainsKeyを使用します | ✔✔️ | ||
| MA0161 | 使用法 | USESHELLEXECUTEを明示的に設定する必要があります | |||
| MA0162 | 使用法 | ProcessStartInfoで過負荷を使用してProcess.Startを使用します | |||
| MA0163 | 使用法 | 標準入力または出力をリダイレクトする場合、useshellexecuteはfalseでなければなりません | ✔✔️ | ||
| MA0164 | スタイル | 括弧を使用して、パターンを明確にしないようにします | ✔✔️ | ✔✔️ | |
| MA0165 | 使用法 | 補間文字列を作成します | ? | ✔✔️ | ✔✔️ |
| id | 抑制されたルール | 正当化 |
|---|---|---|
MAS0001 | CA1822 | BenchmarkDotNet属性で装飾された方法でCA1822を抑制します。 |
MAS0002 | CA1822 | [jsonpropertyname]や[jsoninclude]などのSystem.text.json属性で飾られた方法でCA1822を抑制します。 |
MAS0003 | IDE0058 | よく知られているタイプでIDE0058を抑制します |