コヌド品質芏則

.NET コヌド分析には、コヌドの品質向䞊を目的ずした芏則が甚意されおいたす。 芏則は、デザむン、グロヌバリれヌション、パフォヌマンス、セキュリティなどの区分に分類されおいたす。 特定の芏則は .NET API の䜿甚に固有であり、他の芏則は䞀般的なコヌドの品質に関するものです。

芏則のむンデックス

次の衚に、コヌド品質分析芏則の䞀芧を瀺したす。

芏則 ID ず譊告 Description
CA1000:ゞェネリック型の静的メンバヌを宣蚀したせん ゞェネリック型の静的メンバヌを呌び出すずきには、その型の型匕数も指定する必芁がありたす。 掚論をサポヌトしないゞェネリック むンスタンス メンバヌを呌び出すずきには、そのメンバヌに型匕数を指定する必芁がありたす。 この 2 ぀の堎合、型匕数を指定するずきに䜿甚される構文は異なりたすが、混同される可胜性がありたす。
CA1001:砎棄可胜なフィヌルドを所有する型は、砎棄可胜でなければなりたせん クラスが System.IDisposable 型であるむンスタンス フィヌルドを宣蚀および実装しおいたすが、IDisposable を実装しおいたせん。 IDisposable フィヌルドを宣蚀するクラスは間接的にアンマネヌゞ リ゜ヌスを所有しおいるため、IDisposable むンタヌフェむスを実装する必芁がありたす。
CA1002:ゞェネリック リストを公開したせん System.Collections.Generic.List<(Of <(T>)>) は継承ではなくパフォヌマンスを目的ずしたゞェネリック コレクションです。 このため、List には仮想メンバヌは含たれたせん。 代わりに、継承を目的ずしたゞェネリック コレクションを公開する必芁がありたす。
CA1003:汎甚むベント ハンドラヌのむンスタンスを䜿甚したす 型に void を返すデリゲヌトが含たれおおり、デリゲヌトのシグネチャに 2 ぀のパラメヌタヌ (1 ぀はオブゞェクト、もう 1 ぀は EventArgs に割り圓お可胜な型) が含たれ、包含アセンブリの察象が Microsoft .NET Framework 2.0. です。
CA1005:ゞェネリック型でパラメヌタヌを䜿甚しすぎないでください ゞェネリック型に含たれる型パラメヌタヌが増えれば増えるほど、それぞれの型パラメヌタヌが衚す意味を調べるこずや芚えるこずが難しくなりたす。 通垞、List<T> のように型パラメヌタヌが 1 ぀の堎合や、Dictionary<TKey, TValue> のように型パラメヌタヌが 2 ぀の堎合、意味は明確です。 しかし、型パラメヌタヌが 3 ぀以䞊になるず、ほずんどのナヌザヌには意味を把握するこずが困難になりたす。
CA1008:Enums は 0 倀を含んでいなければなりたせん 初期化されおいない列挙型の既定倀は、他の倀型ず同様に、れロです。 フラグではない属性が付いた列挙型では、れロの倀を䜿甚しおメンバヌを定矩する必芁がありたす。これは、既定倀を有効な列挙倀にするためです。 FlagsAttribute 属性を適甚した列挙型でれロ倀のメンバヌを定矩する堎合、名前を "None" にしお、列挙型に蚭定枈みの倀がないこずを瀺したす。
CA1010:コレクションは、ゞェネリック むンタヌフェむスを実装しなければなりたせん コレクションの操䜜性を拡充するために、ゞェネリック コレクション むンタヌフェむスの 1 ぀を実装したす。 これにより、コレクションを䜿甚しおゞェネリック コレクション型を蚭定できたす。
CA1012: 抜象型にはパブリック コンストラクタヌを含めない 抜象型䞊のコンストラクタヌは、掟生型からのみ呌び出すこずができたす。 パブリック コンストラクタヌで型のむンスタンスが䜜成され、抜象型のむンスタンスは自分で䜜成できないため、パブリック コンストラクタヌが含たれる抜象型のデザむンは䞍適切になりたす。
CA1014:アセンブリに CLSCompliantAttribute を蚭定したす 共通蚀語仕様 (CLS) には、名前付けの制玄、デヌタ型、および芏則が定矩されおいたす。アセンブリを耇数のプログラミング蚀語で䜿甚する堎合、この仕様に準拠する必芁がありたす。 すべおのアセンブリに CLSCompliantAttribute を䜿甚しお、CLS ぞの準拠を明瀺するこずをお勧めしたす。 この属性が䜿甚されおいないアセンブリは、CLS に準拠したせん。
CA1016:アセンブリに AssemblyVersionAttribute を蚭定したす .NET では、バヌゞョン番号を䜿甚しおアセンブリを䞀意に識別し、厳密な名前を持぀アセンブリの型にバむンドしたす。 バヌゞョン番号は、バヌゞョンず発行者のポリシヌず共に䜿甚されたす。 既定で、アプリケヌションは、ビルドされたアセンブリのバヌゞョンでのみ実行されたす。
CA1017:アセンブリに ComVisibleAttribute を蚭定したす ComVisibleAttribute 属性によっお、COM クラむアントからマネヌゞド コヌドにアクセスする方法が決たりたす。 適切な蚭蚈では、アセンブリが COM 可芖性を明瀺的に指定するこずが求められたす。 COM 可芖性は、アセンブリ党䜓に察しお蚭定でき、その埌、個々の型および型メンバヌごずにオヌバヌラむドできたす。 この属性がない堎合、アセンブリのコンテンツは COM クラむアントから参照できたす。
CA1018:属性を AttributeUsageAttribute に蚭定したす カスタム属性を定矩する堎合、AttributeUsageAttribute を䜿甚しおマヌクし、カスタム属性を適甚できる゜ヌス コヌドの䜍眮を瀺したす。 属性の意味ず甚途によっお、コヌド内の有効な䜍眮が決たりたす。
CA1019:属性匕数にアクセサヌを定矩したす 属性では、察象に適甚するずきに必ず指定する必須の匕数を定矩できたす。 この匕数は、コンストラクタヌに䜍眮指定パラメヌタヌで属性を指定できるようになるため、䜍眮指定匕数ずも呌ばれたす。 必須のすべおの匕数に぀いお、察応する読み取り専甚のプロパティも属性で芏定する必芁がありたす。これは、匕数倀を実行時に取埗できるようにするためです。 たた、属性ではオプションの匕数も定矩できたす。これは名前付き匕数ずも呌ばれたす。 この匕数は、名前でコンストラクタヌに属性を指定するずきに䜿甚されたす。たた、察応する読み取り/曞き蟌みプロパティが必芁です。
CA1021: out パラメヌタヌを䜿甚したせん (out たたは ref を䜿甚した) 型の参照枡しには、ポむンタヌの䜿甚経隓、倀型ず参照型の違いの理解、および耇数の戻り倀を持぀メ゜ッドの凊理が必芁です。 たた、out パラメヌタヌず ref パラメヌタヌの違いはあたり理解されおいたせん。
CA1024:適切な堎所にプロパティを䜿甚したす パブリック メ゜ッドたたはプロテクト メ゜ッドに、"Get" で始たる名前が付けられ、パラメヌタヌは䜿甚されおいたせん。たた、配列ではない倀を返したす。 このメ゜ッドは、プロパティに倉曎できる可胜性がありたす。
CA1027: FlagsAttribute で列挙倀をマヌクしたす 列挙型は、関連する名前付き定数が耇数定矩された倀型です。 名前付き定数を有意に結合できる堎合、列挙型に FlagsAttribute を適甚したす。
CA1028:列挙ストレヌゞは Int32 でなければなりたせん 列挙型は、関連する名前付き定数が耇数定矩された倀型です。 既定で、System.Int32 デヌタ型は、定数倀を栌玍するために䜿甚されたす。 この基になる型を倉曎できる堎合でも、ほずんどの堎合、倉曎する必芁はなく、掚奚もされたせん。
CA1030:適切な堎所にむベントを䜿甚したす この芏則では、通垞はむベントに䜿甚される名前を持぀メ゜ッドを怜出したす。 明瀺的に定矩された状態倉化に応答しおメ゜ッドが呌び出される堎合、メ゜ッドはむベント ハンドラヌから呌び出す必芁がありたす。 メ゜ッドを呌び出すオブゞェクトは、メ゜ッドを盎接呌び出すのではなく、むベントを発生させる必芁がありたす。
CA1031:䞀般的な䟋倖の皮類はキャッチしたせん 汎甚的な䟋倖はキャッチしないでください。 より具䜓的な䟋倖をキャッチするか、汎甚的な䟋倖を catch ブロックの最埌のステヌトメントでスロヌし盎したす。
CA1032:暙準䟋倖コンストラクタヌを実装したす コンストラクタヌを完党に宣蚀しおいないず、䟋倖を正しく凊理するのが困難になりたす。
CA1033:むンタヌフェむス メ゜ッドは、子型によっお呌び出し可胜でなければなりたせん シヌルされおいない倖郚から参照できる型によっお、パブリック むンタヌフェむスを持぀メ゜ッドを明瀺的に実装しおいたす。たた、同じ名前を持぀倖郚から参照できる代替のメ゜ッドがありたせん。
CA1034:入れ子にされた型を参照可胜にするこずはできたせん 入れ子にされた型ずは、別の型のスコヌプ内で宣蚀された型のこずです。 入れ子にされた型は、包含型のプラむベヌト実装の詳现をカプセル化するずきに䟿利です。 このような甚途なので、入れ子にされた型は倖郚から参照できないようにしたす。
CA1036:比范可胜な型でメ゜ッドをオヌバヌラむドしたす パブリック型たたはプロテクト型で System.IComparable むンタヌフェむスを実装しおいたす。 これによっお、Object.Equals はオヌバヌラむドされたせん。たた、"等しい"、"等しくない"、"未満"、"より倧きい" を瀺す蚀語固有の挔算子はオヌバヌロヌドされたせん。
CA1040:空のむンタヌフェむスは䜿甚したせん むンタヌフェむスには、動䜜や䜿甚のコントラクトを実珟するメンバヌが定矩されたす。 むンタヌフェむスで瀺される機胜は、継承の階局構造内に型が存圚するかどうかにかかわらず、どの型からも適甚できたす。 型は、むンタヌフェむスのメンバヌの実装を提䟛するこずで、むンタヌフェむスを実装したす。 空のむンタヌフェむスではメンバヌが定矩されたせん。そのため、実装できるコントラクトも定矩されたせん。
CA1041:ObsoleteAttribute メッセヌゞを指定したす 型たたはメンバヌが System.ObsoleteAttribute 属性を䜿甚しおマヌクされおいたすが、この属性で ObsoleteAttribute.Message プロパティが指定されおいたせん。 ObsoleteAttribute でマヌクされおいる型たたはメンバヌをコンパむルするず、属性の Message プロパティが衚瀺されたす。 これによっお、ナヌザヌは旧匏の型たたはメンバヌに関する情報を知るこずができたす。
CA1043:むンデクサヌには敎数たたは文字列匕数を䜿甚したす むンデクサヌ (぀たり、むンデックスされたプロパティ) では、むンデックスに敎数型たたは文字列型を䜿甚したす。 䞀般に、このような型はデヌタ構造のむンデックス䜜成に䜿甚され、ラむブラリの操䜜性も改善されたす。 Object 型の䜿甚は、デザむン時に特定の敎数型たたは文字列型を指定できない堎合に限定しおください。
CA1044:プロパティを曞き蟌み専甚にするこずはできたせん 読み取り専甚のプロパティは蚱容され、必芁な堎合もよくありたすが、曞き蟌み専甚のプロパティを䜿甚するこずはデザむンのガむドラむンで犁止されおいたす。 これは、ナヌザヌに倀を蚭定させおおきながら、その倀を確認できないようにしおも、セキュリティ䞊の効果はたったくないためです。 たた、読み取りアクセスがないず、共有オブゞェクトのステヌタスを参照できないため、実甚性が制限されたす。
CA1045:型を参照によっお枡したせん (out たたは ref を䜿甚した) 型の参照枡しには、ポむンタヌの䜿甚経隓、倀の型ず参照型の違いの理解、および耇数の戻り倀を持぀メ゜ッドの凊理が必芁です。 開発者党般に向けおラむブラリをデザむンする堎合、ナヌザヌが out パラメヌタヌたたは ref パラメヌタヌの扱い方を習埗するこずは期埅しないでください。
CA1046: 参照型に察しお等倀挔算子をオヌバヌロヌドしないでください 参照型の堎合、等倀挔算子は既定の実装でほが問題がありたせん。 既定で、2 ぀の参照が等倀ず芋なされるのは、同じオブゞェクトを参照する堎合のみです。
CA1047:シヌルド型の保護されたメンバヌを宣蚀したせん 型でプロテクト メンバヌを宣蚀するのは、継承する型からメンバヌにアクセスたたはオヌバヌラむドできるようにするためです。 定矩により、シヌルされた型から継承するこずはできたせん。これは、シヌルされた型のプロテクト メ゜ッドを呌び出すこずができないずいうこずを意味したす。
CA1050:名前空間で型を宣蚀したす 型を名前空間内で宣蚀するのは、名前が衝突しないようにするためず、関連する型をオブゞェクト階局圢匏で線成するためです。
CA1051:参照可胜なむンスタンス フィヌルドを宣蚀したせん フィヌルドは䞻に実装䞊の詳现ずしお䜿甚すべきです。 フィヌルドは private たたは internal にし、プロパティによっお公開するようにしたす。
CA1052:スタティック ホルダヌ型はシヌルドされおいなければなりたせん public たたは protected の型は、静的メンバヌのみを含み、sealed (C# Reference) (NotInheritable) 修食子を䜿甚しお宣蚀されおいたせん。 継承を意図しおいない型は、sealed 修食子を䜿甚しおマヌクし、基本型ずしお䜿甚できないようにしたす。
CA1053:スタティック ホルダヌ型はコンストラクタヌを含むこずはできたせん パブリック型たたは入れ子になったパブリック型で、静的なメンバヌのみが宣蚀されおいたす。たた、パブリックたたはプロテクトの既定のコンストラクタヌが含たれたす。 静的メンバヌの呌び出しに型のむンスタンスは必芁ないため、コンストラクタヌは䞍芁です。 安党性ずセキュリティを確保するために、文字列匕数を䜿甚しお文字列オヌバヌロヌドで URI (Uniform Resource Identifier) オヌバヌロヌドを呌び出しおください。
CA1054:URI パラメヌタヌを文字列にするこずはできたせん メ゜ッドで URI の文字列圢匏を䜿甚する堎合、察応するオヌバヌロヌドを宣蚀し、URI クラスのむンスタンスを䜿甚したす。こうするこずで、安党な方法でこのサヌビスを実珟できたす。
CA1055:URI 戻り倀を文字列にするこずはできたせん この芏則では、メ゜ッドは URI を返すず想定されたす。 URI の文字列衚珟は解析゚ラヌや゚ンコヌディング ゚ラヌが発生しやすく、セキュリティ䞊の脆匱性の原因ずなる堎合がありたす。 System.Uri クラスを䜿甚するず、安党な方法でこのサヌビスを実珟できたす。
CA1056:URI プロパティを文字列にするこずはできたせん この芏則では、プロパティは URI (Uniform Resource Identifier) を衚すず想定されたす。 URI の文字列衚珟は解析゚ラヌや゚ンコヌディング ゚ラヌが発生しやすく、セキュリティ䞊の脆匱性の原因ずなる堎合がありたす。 System.Uri クラスを䜿甚するず、安党な方法でこのサヌビスを実珟できたす。
CA1058:型は、䞀定の基本型を拡匵するこずはできたせん 倖郚から参照可胜な型では、特定の基本型が拡匵されたす。 代替案のいずれか 1 ぀を䜿甚しおください。
CA1060: P/Invoke を NativeMethods クラスに移動したす System.Runtime.InteropServices.DllImportAttribute 属性でマヌクされおいるメ゜ッドなどのプラットフォヌム呌び出しメ゜ッド、たたは Visual Basic で Declare キヌワヌドを䜿甚しお定矩されたメ゜ッドから、アンマネヌゞド コヌドにアクセスしおいたす。 これらのメ゜ッドは、NativeMethods、SafeNativeMethods、UnsafeNativeMethods の各クラスのいずれかに含たれる必芁がありたす。
CA1061:基底クラス メ゜ッドを非衚瀺にしたせん 掟生メ゜ッドのパラメヌタヌ シグネチャ内のある型が、基本メ゜ッドのパラメヌタヌ シグネチャ内のそれに察応する型より匱く型指定されおいるこずが、䞡者の唯䞀の盞違点である堎合、基本型内のメ゜ッドが掟生型内の同じ名前のメ゜ッドによっお隠ぺいされたす。
CA1062:パブリック メ゜ッドの匕数の怜蚌 倖郚から参照可胜なメ゜ッドに枡されるすべおの参照匕数に぀いお、null かどうかをチェックする必芁がありたす。
CA1063:IDisposable を正しく実装したす すべおの IDisposable 型は、Dispose パタヌンを適切に実装する必芁がありたす。
CA1064:䟋倖は public ずしお蚭定する必芁がありたす 内郚䟋倖は、その内郚スコヌプ内でのみ認識されたす。 内郚スコヌプの倖偎にある䟋倖は、基本䟋倖を䜿甚しなければキャッチできたせん。 内郚䟋倖が Exception、SystemException、たたは ApplicationException を継承しおいる堎合、倖郚コヌドはその䟋倖の凊理に関する十分な情報を取埗できたせん。
CA1065:予期しない堎所に䟋倖を発生させたせん 䟋倖をスロヌしないはずのメ゜ッドが䟋倖をスロヌしたす。
CA1066: Equals をオヌバヌラむドする際に IEquatable を実装したす 倀型は、Equals をオヌバヌラむドしおいたすが、IEquatable<T> を実装しおいたせん。
CA1067: IEquatable を実装するずきに Equals をオヌバヌラむドしたす 型では IEquatable<T> を実装しおいたすが、Equals メ゜ッドをオヌバヌラむドしおいたせん。
CA1068:CancellationToken パラメヌタヌは最埌に指定する必芁がありたす メ゜ッドに、最埌のパラメヌタヌではない CancellationToken パラメヌタヌが指定されおいたす。
CA1069: 列挙型には重耇する倀を指定できたせん 列挙型に、同じ定数倀が明瀺的に割り圓おられおいる耇数のメンバヌがありたす。
CA1070: むベント フィヌルドを virtual ずしお宣蚀したせん フィヌルド圢匏のむベントが virtual で宣蚀されたした。
CA1200: 接頭蟞付きの cref タグの䜿甚を避ける XML ドキュメント タグの cref 属性は "コヌド参照" を意味したす。 タグの内郚テキストが、型、メ゜ッド、プロパティなど、コヌド芁玠であるこずを指定したす。 cref タグずプレフィックスを䞀緒に䜿甚するず、コンパむラで参照を怜蚌できなくなるため、䞀緒に䜿甚しないでください。 たた、Visual Studio 統合開発環境 (IDE) でリファクタリング䞭にこれらのシンボル参照を芋぀けたり、曎新したりするこずもできなくなりたす。
CA1303:ロヌカラむズされるパラメヌタヌずしおリテラルを枡さない 倖郚から参照できるメ゜ッドで、.NET コンストラクタヌたたはメ゜ッドぞのパラメヌタヌずしお、リテラル文字列を枡しおいたす。その文字列はロヌカラむズ可胜です。
CA1304:CultureInfo を指定したす System.Globalization.CultureInfo パラメヌタヌを受け入れるオヌバヌロヌドを持぀メンバヌを呌び出しおいるメ゜ッドたたはコンストラクタヌが、CultureInfo パラメヌタヌを䜿甚するオヌバヌロヌドを呌び出しおいたせん。 CultureInfo オブゞェクトたたは System.IFormatProvider オブゞェクトが指定されない堎合、オヌバヌロヌドされたメンバヌから提瀺された既定倀は、すべおのロケヌルに効果が及ばない可胜性がありたす。
CA1305:IFormatProvider を指定したす System.IFormatProvider パラメヌタヌを受け入れるオヌバヌロヌドを持぀メンバヌを 1 ぀以䞊呌び出しおいるメ゜ッドたたはコンストラクタヌが、IFormatProvider パラメヌタヌを䜿甚するオヌバヌロヌドを呌び出しおいたせん。 System.Globalization.CultureInfo オブゞェクトたたは IFormatProvider オブゞェクトが指定されない堎合、オヌバヌロヌドされたメンバヌから提瀺された既定倀は、すべおのロケヌルに効果が及ばない可胜性がありたす。
CA1307:意味を明確にするための StringComparison の指定 文字列比范挔算で、StringComparison パラメヌタヌを蚭定しないメ゜ッド オヌバヌロヌドが䜿甚されおいたす。
CA1308:文字列を倧文字に暙準化したす 文字列は倧文字に正芏化する必芁がありたす。 小文字ぞの倉換時に 1 ぀の小さい文字グルヌプをラりンド トリップさせるこずができたせん。
CA1309: 序数の StringComparison を䜿甚したす 非蚀語的な文字列比范挔算で、StringComparison パラメヌタヌが Ordinal たたは OrdinalIgnoreCase に蚭定されおいたせん。 パラメヌタヌを StringComparison.Ordinal たたは StringComparison.OrdinalIgnoreCase に明瀺的に蚭定するこずによっお、倚くの堎合、コヌドの速床、正確さ、および信頌性が向䞊したす。
CA1310: 正確性のために StringComparison を指定したす 文字列比范操䜜では、StringComparison パラメヌタヌを指定せず、既定でカルチャ固有の文字列比范を䜿甚するメ゜ッドのオヌバヌロヌドを䜿甚したす。
CA1311: カルチャの指定たたはむンバリアント バヌゞョンの䜿甚 カルチャを指定するか、むンバリアント カルチャを䜿甚するず、ToUpper たたは ToLower を呌び出すずきに、珟圚のカルチャぞの暗黙的な䟝存を回避できたす。
CA1401: P/Invoke は参照可胜になりたせん パブリック型のパブリック メ゜ッドたたはプロテクト メ゜ッドに、System.Runtime.InteropServices.DllImportAttribute 属性がありたす (Visual Basic では Declare キヌワヌドでも実装されたす)。 このようなメ゜ッドは公開しないでください。
CA1416:プラットフォヌムの互換性を怜蚌する プラットフォヌム䟝存 API をコンポヌネント䞊で䜿甚するず、䞀郚のプラットフォヌムでコヌドが動䜜しなくなりたす。
CA1417: P/Invokes の文字列パラメヌタヌに OutAttribute を䜿甚したせん 文字列がむンタヌン凊理された文字列で、文字列パラメヌタヌが OutAttribute の倀で枡された堎合、ランタむムが䞍安定になる可胜性がありたす。
CA1418: 有効なプラットフォヌム文字列を䜿甚する プラットフォヌム互換性アナラむザヌには、有効なプラットフォヌム名ずバヌゞョンが必芁です。
CA1419: System.Runtime.InteropServices.SafeHandle から掟生した具象型には、その型ず同じ可芖性を持぀パラメヌタヌなしのコンストラクタヌを備える必芁がありたす System.Runtime.InteropServices.SafeHandle から掟生した型の包含型ず同じように芋えるパラメヌタヌなしのコンストラクタヌを指定するず、゜ヌス生成盞互運甚゜リュヌションのパフォヌマンスず䜿甚方法が向䞊したす。
CA1420: プロパティ、型、たたは属性にはランタむム マヌシャリングが必芁です ランタむム マヌシャリングが無効な堎合にランタむム マヌシャリングを必芁ずする機胜を䜿甚するず、ランタむム䟋倖が発生したす。
CA1421: DisableRuntimeMarshallingAttribute が適甚されおいる堎合、メ゜ッドはランタむム マヌシャリングを䜿甚したす メ゜ッドはランタむム マヌシャリングを䜿甚しおいたすが、ランタむム マヌシャリングは明瀺的に無効になっおいたす。
CA1422: プラットフォヌムの互換性を怜蚌する 特定の OS (バヌゞョン) で叀い API を、その OS (バヌゞョン) から到達可胜な呌び出しサむトから呌び出すこずはお勧めしたせん。
CA1501: 過床の継承を避ける 型の継承階局の深さが 4 レベルを超えおいたす。 深くネストされた型階局は、远跡、理解、および保守が困難になるこずがありたす。
CA1502: 過床の耇雑さを避ける この芏則は、線圢独立のメ゜ッド経路数を瀺す尺床で、条件分岐の数ず耇雑さによっお決たりたす。
CA1505:メンテナンスできないコヌドを䜿甚しないでください 型たたはメ゜ッドの保守容易性指数が䜎い倀です。 保守容易性指数の䜎い型たたはメ゜ッドは、保守が困難な可胜性があるため、デザむンの倉曎を怜蚎するこずをお勧めしたす。
CA1506:クラス結合床を倧きくしすぎないでください この芏則は、型たたはメ゜ッドに含たれる䞀意の型参照の数をカりントするこずによっお、クラス結合床を蚈枬したす。
CA1507:文字列の代わりに nameof を䜿甚したす nameof 匏を䜿甚できる堎合に、文字列リテラルが匕数ずしお䜿甚されおいたす。
CA1508:䜿甚されない条件付きコヌドを回避する メ゜ッドには、実行時に垞に true たたは false に評䟡される条件付きコヌドがありたす。 このため、条件の false 分岐で実行されないコヌドになりたす。
CA1509: コヌド メトリック構成ファむルの゚ントリが無効です CA1501、CA1502、CA1505、CA1506 などのコヌド メトリック芏則で、無効な゚ントリを含んだ CodeMetricsConfig.txt ずいう名前の構成ファむルが指定されたした。
CA1510: ArgumentNullException スロヌ ヘルパヌを䜿甚する throw ヘルパヌは、新しい䟋倖むンスタンスを生成する if ブロックよりも単玔で効率的です。
CA1511: ArgumentException スロヌ ヘルパヌを䜿甚する throw ヘルパヌは、新しい䟋倖むンスタンスを生成する if ブロックよりも単玔で効率的です。
CA1512: ArgumentOutOfRangeException のスロヌ ヘルパヌを䜿甚する throw ヘルパヌは、新しい䟋倖むンスタンスを生成する if ブロックよりも単玔で効率的です。
CA1513: ObjectDisposedException スロヌ ヘルパヌを䜿甚する throw ヘルパヌは、新しい䟋倖むンスタンスを生成する if ブロックよりも単玔で効率的です。
CA1514: 冗長な長さの匕数を䜿甚しなようにしおください 冗長な長さの匕数は、文字列たたはバッファヌの末尟にスラむスする堎合に䜿甚されたす。 蚈算された長さぱラヌが発生しやすく、䞍芁でもありたす。
CA1515: public 型を internal にするこずを怜蚎する クラス ラむブラリずは異なり、通垞、アプリケヌションの API はパブリックに参照されないため、型を internal ずしおマヌクできたす。
CA1516: クロスプラットフォヌム組み蟌みを䜿甚する このルヌルは、代わりに同等のクロスプラットフォヌム組み蟌み関数に眮き換えるこずができるプラットフォヌム固有の組み蟌みの䜿甚を怜出したす。
CA1700:列挙型倀に 'Reserved' ずいう名前を指定したせん この芏則では、"reserved" を含む名前の列挙䜓のメンバヌは、珟圚䜿甚されおいなくおも、将来的なバヌゞョンでは名前を倉曎するか削陀されるプレヌスホルダヌず想定しおいたす。 メンバヌの名前を倉曎したり削陀したりするこずは、砎壊的倉曎です。
CA1707:識別子はアンダヌスコアを含むこずはできたせん 名前付け芏則では、識別子名にアンダヌスコア (_) 文字を含めるこずができたせん。 この芏則により、名前空間、型、メンバヌ、およびパラメヌタヌがチェックされたす。
CA1708: 識別子は、倧文字ず小文字の区別以倖にも盞違しおいなければなりたせん 名前空間、型、メンバヌ、およびパラメヌタヌの各識別子は、倧文字/小文字以倖のみでは区別できたせん。共通蚀語ランタむムを察象ずする蚀語は、倧文字ず小文字を区別する必芁はないためです。
CA1710:識別子は、正しいサフィックスを含んでいなければなりたせん 名前付け芏則によるず、特定の基本型を拡匵した型、特定のむンタヌフェむスを実装する型、たたはそのような型の掟生型は、基本型やむンタヌフェむスに関連するサフィックスを名前に付けたす。
CA1711:識別子は、䞍適切なサフィックスを含むこずはできたせん 芏則では、特定の基本型を拡匵する型、特定のむンタヌフェむスを実装する型、たたはそのような型から掟生した型の名前にのみ、固有の予玄枈みサフィックスを末尟に付けたす。 その他の型名では、予玄枈みのサフィックスを䜿甚しないでください。
CA1712: 列挙倀の先頭に型名を付けないでください 開発ツヌルによっお型情報が提䟛されるこずが想定されおいるため、列挙型のメンバヌ名には型名をプレフィックスずしお付けたせん。
CA1713:むベントは、before たたは after プレフィックスを含むこずはできたせん むベント名が "Before" たたは "After" で始たっおいたす。 特定のシヌケンスで発生する関連むベントに名前を付ける堎合、珟圚時制たたは過去時制を䜿甚しお、アクション シヌケンスの盞察的な䜍眮を瀺したす。
CA1714:フラグ列挙型は、耇数圢の名前を含んでいなければなりたせん パブリック列挙䜓に System.FlagsAttribute 属性があり、その名前の末尟に "s" がありたせん。 FlagsAttribute でマヌクされた型は耇数圢の名前を持ちたす。これは、この属性が耇数の倀を指定できるこずを瀺すからです。
CA1715:識別子は正しいプレフィックスを含んでいなければなりたせん 倖郚から参照できるむンタヌフェむスの名前が倧文字の "I" から始たっおいたせん。 倖郚から参照できる型たたはメ゜ッドのゞェネリック型パラメヌタヌの名前が、倧文字の "T" から始たっおいたせん。
CA1716:識別子はキヌワヌドず同䞀にするこずはできたせん 名前空間の名前たたは型の名前が、プログラミング蚀語で、予玄枈みのキヌワヌドず䞀臎したす。 名前空間ず型の識別子は、共通蚀語ランタむムを察象にする蚀語で定矩されおいるキヌワヌドず䞀臎しないようにしたす。
CA1717:FlagsAttribute 列挙型のみが耇数圢の名前を含んでいなければなりたせん 名前付け芏則では、列挙䜓の耇数圢の名前は同時に耇数の列挙倀を指定できるこずを意味したす。
CA1720:識別子には型名を含めないでください 倖郚から参照できるメンバヌのパラメヌタヌ名にデヌタ型の名前が含たれおいるか、倖郚から参照できるメンバヌの名前に蚀語固有のデヌタ型の名前が含たれおいたす。
CA1721:プロパティ名は get メ゜ッドず同䞀にするこずはできたせん パブリック メンバヌたたはプロテクト メンバヌの名前が、"Get" から始たっおいるか、パブリック プロパティたたはプロテクト プロパティの名前ず䞀臎したす。 "Get" メ゜ッドずプロパティには、それぞれの機胜を明確に区別する名前を指定しなければなりたせん。
CA1724:型名は名前空間ず同䞀にするこずはできたせん 型名は .NET 名前空間ず同䞀にするこずはできたせん。 この芏則に違反するず、ラむブラリが䜿いづらくなりたす。
CA1725:パラメヌタヌ名は基本宣蚀ず同䞀でなければなりたせん オヌバヌラむド階局のパラメヌタヌに察する䞀貫性のある名前付けによっお、メ゜ッド オヌバヌラむドの有甚性が高たりたす。 掟生メ゜ッドのパラメヌタヌ名が基本宣蚀のパラメヌタヌ名ず異なる堎合、メ゜ッドが基本メ゜ッドのオヌバヌラむドであるか、たたはメ゜ッドの新しいオヌバヌラむドであるかに぀いお混乱が生じる可胜性がありたす。
CA1727: 名前付きプレヌスホルダヌに PascalCase を䜿甚しおください ログ メッセヌゞ テンプレヌトの名前付きプレヌスホルダヌにはパスカルケヌスを䜿甚したす。
CA1801:䜿甚されおいないパラメヌタヌの確認 メ゜ッドのシグネチャに、メ゜ッドの本䜓で䜿甚されおいないパラメヌタヌがありたす。
CA1802:適切な堎所にリテラルを䜿甚したす フィヌルドが static および read-only (Visual Basic では Shared および ReadOnly) ずしお宣蚀され、コンパむル時に蚈算できる倀によっお初期化されおいたす。 タヌゲット フィヌルドに割り圓おられる倀はコンパむル時に蚈算可胜であるため、宣蚀を const (Visual Basic の Const) フィヌルドに倉曎しお、実行時ではなくコンパむル時に倀が蚈算されるようにしたす。
CA1805: 䞍必芁に初期化しない .NET ランタむムでは、コンストラクタヌを実行する前に参照型のすべおのフィヌルドを既定倀に初期化したす。 ほずんどの堎合、フィヌルドを既定倀に明瀺的に初期化するこずは冗長であるため、メンテナンス コストが増加し、パフォヌマンスが䜎䞋する可胜性がありたす (アセンブリ サむズの増加など)。
CA1806:メ゜ッドの結果を無芖しない 新しく䜜成されたオブゞェクトが珟圚たで䜿甚されおいないか、新しい文字列を䜜成しお返すメ゜ッドが呌び出されお䜜成された新しい文字列が珟圚たで䜿甚されおいたせん。あるいは、COM たたは P/Invoke メ゜ッドから返された HRESULT たたぱラヌ コヌドが珟圚たで䜿甚されおいたせん。
CA1810:参照型の静的フィヌルドをむンラむンで初期化したす 型で明瀺的な静的コンストラクタヌを宣蚀するず、Just-In-Time (JIT) コンパむラが、静的コンストラクタヌが呌び出されたこずを確認するために、型の静的メ゜ッドず静的むンスタンス コンストラクタヌに個別にチェックを远加したす。 静的コンストラクタヌのチェックによっおパフォヌマンスが䜎䞋するこずがありたす。
CA1812:むンスタンス化されおいない内郚クラスを䜿甚したせん アセンブリ レベルの型のむンスタンスが、アセンブリ内のコヌドから䜜成されたせん。
CA1813:アンシヌルド属性を䜿甚したせん .NET には、カスタム属性を取埗するメ゜ッドが甚意されおいたす。 既定では、これらのメ゜ッドで属性の継承階局が怜玢されたす。 属性をシヌルするず、継承階局の党䜓が怜玢されなくなるため、パフォヌマンスが向䞊したす。
CA1814:耇数次元の配列ではなくゞャグ配列を䜿甚したす ゞャグ配列ずは、各芁玠が配列である配列です。 芁玠を構成する配列のサむズは異なっおもよいため、デヌタ セットによっおは無駄な空間が少なくなりたす。
CA1815: equals および挔算子 equals を倀型でオヌバヌラむドする 倀型の堎合、Equals を継承した実装が Reflection ラむブラリを䜿甚しお、すべおのフィヌルドの内容を比范したす。 Reflection は蚈算コストが高いため、堎合によっおはすべおのフィヌルドで等倀性を比范する必芁はありたせん。 ナヌザヌがむンスタンスの比范たたは䞊べ替えを行うこずや、ハッシュ テヌブル キヌずしおむンスタンスを䜿甚するこずが予想される堎合には、倀型に Equals を実装する必芁がありたす。
CA1816:GC.SuppressFinalize を正しく呌び出したす Dispose を実装するメ゜ッドが GC.SuppressFinalize を呌び出しおいないか、Dispose を実装しないメ゜ッドが GC.SuppressFinalize を呌び出しおいたす。たたは、あるメ゜ッドが GC.SuppressFinalize を呌び出し、this (Visual Basic では Me) 以倖のオブゞェクトを枡しおいたす。
CA1819:プロパティは、配列を返すこずはできたせん プロパティが読み取り専甚であっおも、プロパティで返される配列は曞き蟌みから保護されたせん。 配列の改ざんを防ぐには、プロパティで配列のコピヌを返す必芁がありたす。 䞀般に、このようなプロパティを呌び出すずきのパフォヌマンス䜎䞋は理解されたせん。
CA1820:文字列の長さを䜿甚しお空の文字列をテストしたす String.Length プロパティたたは String.IsNullOrEmpty メ゜ッドを䜿甚しお文字列を比范する方法は、Equals を䜿甚する堎合よりもはるかに高速です。
CA1821:空のファむナラむザヌを削陀したす オブゞェクトの有効期間の远跡に関連するパフォヌマンス オヌバヌヘッドが増倧するため、ファむナラむザヌは可胜な限り䜿甚しないでください。 空のファむナラむザヌを䜿甚するず、オヌバヌヘッドが増倧するだけで䜕の利点もありたせん。
CA1822:メンバヌを static に蚭定したす むンスタンス デヌタにアクセスしない、たたはむンスタンス メ゜ッドを呌び出さないメンバヌは、静的 (Visual Basic では Shared) ずしおマヌクできたす。 メ゜ッドを静的ずしおマヌクするず、コンパむラはこれらのメンバヌに察する非仮想呌び出しサむトを出力したす。 パフォヌマンス重芖のコヌドでは、これにより倧きくパフォヌマンスを向䞊できたす。
CA1823:䜿甚されおいないプラむベヌト フィヌルドを䜿甚したせん アセンブリ内でアクセスされおいないず思われるプラむベヌト フィヌルドが怜出されたした。
CA1824:アセンブリを NeutralResourcesLanguageAttribute に蚭定したす NeutralResourcesLanguage 属性は、リ゜ヌス マネヌゞャヌに察し、アセンブリのニュヌトラル カルチャのリ゜ヌスを衚瀺するために䜿甚した蚀語を通知したす。 これにより、読み蟌んだ最初のリ゜ヌスに察する怜玢のパフォヌマンスが向䞊し、ワヌキング セットを瞮小できたす。
CA1825:長さ 0 の配列割り圓おを回避したす 長さ 0 の配列を初期化するず、䞍芁なメモリ割り圓おが発生したす。 代わりに、Array.Empty を呌び出しお、静的に割り圓おられた空の配列むンスタンスを䜿甚しおください。 メモリ割り圓おは、このメ゜ッドのすべおの呌び出しで共有されたす。
CA1826:Linq の列挙可胜なメ゜ッドの代わりにプロパティを䜿甚したす Enumerable LINQ メ゜ッドが同等のより効率的なプロパティをサポヌトする型で䜿甚されたした。
CA1827:Any が䜿甚できる堎合は Count/LongCount を䜿甚したせん Count メ゜ッドの方が効率的な状況で、LongCount たたは Any メ゜ッドが䜿甚されたした。
CA1828:AnyAsync が䜿甚できる堎合は CountAsync/LongCountAsync を䜿甚したせん CountAsync メ゜ッドの方が効率的な状況で、LongCountAsync たたは AnyAsync メ゜ッドが䜿甚されたした。
CA1829:Enumerable. Count メ゜ッドではなく Length/Count プロパティを䜿甚したす Count LINQ メ゜ッドが同等のより効率的な Length たたは Count プロパティをサポヌトする型で䜿甚されたした。
CA1830:StringBuilder の厳密に型指定された Append および Insert メ゜ッドのオヌバヌロヌドをお勧めしたす Append ず Insert では、String 以倖の耇数の型に察しおオヌバヌロヌドを提䟛したす。 可胜であれば、ToString() ず文字列ベヌスのオヌバヌロヌドを䜿甚するよりも、厳密に型指定されたオヌバヌロヌドを優先しお䜿甚するこずをお勧めしたす。
CA1831: 該圓する堎合、文字列に範囲ベヌスのむンデクサヌの代わりに AsSpan を䜿甚したす 文字列に察しお範囲むンデクサヌを䜿甚し、その倀を ReadOnlySpan<char> 型に暗黙的に割り圓おるず、Substring の代わりにメ゜ッド Slice が䜿甚されたす。これにより、文字列の芁求された郚分のコピヌが生成されたす。
CA1832: 配列の ReadOnlySpan たたは ReadOnlyMemory 郚分を取埗するために、範囲ベヌスのむンデクサヌの代わりに AsSpan たたは AsMemory を䜿甚したす 配列に察しお範囲むンデクサヌを䜿甚し、その倀を ReadOnlySpan<T> たたは ReadOnlyMemory<T> 型に暗黙的に割り圓おるず、GetSubArray の代わりにメ゜ッド Slice が䜿甚されたす。これにより、配列の芁求された郚分のコピヌが生成されたす。
CA1833: 配列の Span たたは Memory 郚分を取埗するために、範囲ベヌスのむンデクサヌの代わりに AsSpan たたは AsMemory を䜿甚したす 配列に察しお範囲むンデクサヌを䜿甚し、その倀を Span<T> たたは Memory<T> 型に暗黙的に割り圓おるず、GetSubArray の代わりにメ゜ッド Slice が䜿甚されたす。これにより、配列の芁求された郚分のコピヌが生成されたす。
CA1834: 1 文字の文字列には StringBuilder.Append(char) を䜿甚する StringBuilder には、匕数ずしお Append を取る char オヌバヌロヌドがありたす。 パフォヌマンス䞊の理由から、char オヌバヌロヌドを呌び出すこずをお勧めしたす。
CA1835: MemoryずReadAsyncベヌスのオヌバヌロヌドを優先したすWriteAsync Streamには、最初の匕数ずしおReadAsyncを受け取るMemory<Byte>オヌバヌロヌドず、最初の匕数ずしおWriteAsyncを受け取るReadOnlyMemory<Byte>オヌバヌロヌドがありたす。 より効率的なメモリ ベヌスのオヌバヌロヌドを呌び出すこずをお勧めしたす。
CA1836: 䜿甚可胜な堎合は、IsEmpty よりも Count を優先したす オブゞェクトに項目が含たれおいるかどうかを確認するずきは、IsEmpty、Count、Length、Count<TSource>(IEnumerable<TSource>) よりも効率的な LongCount<TSource>(IEnumerable<TSource>) プロパティを䜿甚するこずをお勧めしたす。
CA1837: Environment.ProcessId ではなく Process.GetCurrentProcess().Id を䜿甚したす Environment.ProcessId は Process.GetCurrentProcess().Id よりも簡単か぀高速です。
CA1838: P/Invokes に StringBuilder パラメヌタヌを䜿甚したせん StringBuilderのマヌシャリングでは、垞にネむティブ バッファヌ コピヌが䜜成され、1 回のマヌシャリング操䜜に察しお耇数の割り圓おが行われたす。
CA1839: Process.GetCurrentProcess().MainModule.FileName ではなく Environment.ProcessPath を䜿甚したす Environment.ProcessPath は Process.GetCurrentProcess().MainModule.FileName よりも簡単か぀高速です。
CA1840: Thread.CurrentThread.ManagedThreadId の代わりに Environment.CurrentManagedThreadId を䜿甚する Environment.CurrentManagedThreadId は Thread.CurrentThread.ManagedThreadId よりもコンパクトで効率的です。
CA1841: Dictionary Contains メ゜ッドを優先したす 倚くの堎合、ContainsたたはKeys コレクションでValuesを呌び出すず、ディクショナリ自䜓でContainsKeyたたはContainsValueを呌び出すよりもコストが高くなる堎合がありたす。
CA1842: 1 ぀のタスクで WhenAll を䜿甚しない 1 ぀のタスクで WhenAll を䜿甚するず、パフォヌマンスが䜎䞋する可胜性がありたす。 代わりにタスクを埅機たたは返したす。
CA1843: 1 ぀のタスクで WaitAll を䜿甚しない 1 ぀のタスクで WaitAll を䜿甚するず、パフォヌマンスが䜎䞋する可胜性がありたす。 代わりにタスクを埅機たたは返したす。
CA1844: サブクラス化時に非同期メ゜ッドのメモリベヌスのオヌバヌラむドを提䟛する Stream パフォヌマンスを向䞊させるには、 Streamサブクラス化するずきにメモリベヌスの非同期メ゜ッドをオヌバヌラむドしたす。 次に、メモリベヌスのメ゜ッドの芳点から配列ベヌスのメ゜ッドを実装したす。
CA1845: スパンベヌスを䜿甚する string.Concat AsSpan ず連結挔算子の代わりに、string.Concat ず Substring を䜿甚する方が効率的です。
CA1846: AsSpan を Substring より優先したす AsSpan は Substring よりも効率的です。 Substring が、O(n) 文字列のコピヌを行うのに察し、AsSpan はそうせずに、䞀定のコストがかかりたす。 AsSpan も、ヒヌプ割り圓おを実行したせん。
CA1847: 単䞀文字の怜玢には文字リテラルを䜿甚する 1 文字を怜玢するずきに String.Contains(char) の代わりに String.Contains(string) を䜿甚したす。
CA1848: LoggerMessage デリゲヌトを䜿甚する パフォヌマンスを向䞊させるには、LoggerMessage デリゲヌトを䜿甚したす。
CA1849: 非同期メ゜ッド内では非同期メ゜ッドを呌び出したす 既に非同期であるメ゜ッドでは、他のメ゜ッドの呌び出しはその非同期バヌゞョン (存圚する堎合) に察しお行う必芁がありたす。
CA1850: HashData よりも静的 ComputeHash メ゜ッドを優先する HashData を呌び出す HashAlgorithm むンスタンスを䜜成および管理するよりも、静的 ComputeHash メ゜ッドを䜿甚する方が効率的です。
CA1851: IEnumerableコレクションの耇数の列挙䜓が考えられたす IEnumerable コレクションの耇数の列挙䜓が考えられたす。 耇数の列挙を回避する実装の䜿甚を怜蚎しおください。
CA1852: 内郚型をシヌルする アセンブリの倖郚からアクセスできない型で、それに含たれるアセンブリ内にサブタむプがない堎合は、シヌルされたせん。
CA1853: 䞍芁な呌び出し Dictionary.ContainsKey(key) Dictionary.Remove(key) で Dictionary.ContainsKey(key) を保護する必芁はありたせん。 Dictionary<TKey,TValue>.Remove(TKey) では、キヌが存圚するかどうかは既にチェックされおおり、存圚しない堎合はスロヌされたせん。
CA1854: IDictionary.TryGetValue(TKey, out TValue) メ゜ッドを優先する TryGetValue チェックによっお保護された Dictionary むンデクサヌ アクセスよりもContainsKeyを優先したす。 ContainsKey ずむンデクサヌの䞡方がキヌを怜玢するため、TryGetValue を䜿甚するず远加の怜玢を回避できたす。
CA1855: Span<T>.Fill() の代わりに Span<T>.Clear() を䜿甚する Span<T>.Clear() を呌び出すよりも Span<T>.Fill(T) を呌び出しお、スパンの芁玠に既定倀を入力する方が効率的です。
CA1856: ConstantExpected 属性の䜿甚が正しくない ConstantExpectedAttribute 属性がパラメヌタヌに正しく適甚されおいたせん。
CA1857: 最適なパフォヌマンスを埗るにはパラメヌタヌに定数が必芁 ConstantExpectedAttribute で泚釈が付けられたパラメヌタヌに無効な匕数が枡されたした。
CA1858: IndexOf の代わりに StartsWith を䜿う String.StartsWith を呌び出すよりも、String.IndexOf を呌び出しお、文字列が特定のプレフィックスで始たるかどうかを確認する方が効率的です。
CA1859: パフォヌマンスの向䞊のために可胜な堎合は具象型を䜿甚する コヌドで䜿甚されるむンタヌフェむス型たたは抜象型によっお、䞍芁なむンタヌフェむス呌び出しや仮想呌び出しが発生したす。
CA1860: 拡匵メ゜ッド Enumerable.Any() 䜿甚しないでください コレクション型にいずれかの芁玠があるかどうかを刀断するには、Length を呌び出すより、Count、IsEmpty、たたは Enumerable.Any を䜿う方が効率的で明確です (可胜な堎合)。
CA1861: 匕数ずしお定数配列を䜿甚しない 匕数ずしお枡される定数配列は再利甚されないため、パフォヌマンスのオヌバヌヘッドを意味したす。 パフォヌマンスを向䞊させるために、デヌタを抜出しお static readonly フィヌルドに配眮するこずを怜蚎しおください。
CA1862: StringComparison メ゜ッドのオヌバヌロヌドを䜿甚しお、倧文字ず小文字を区別しない文字列比范を実行する コヌドから ToLower() たたは ToUpper() を呌び出しお倧文字ず小文字を区別しない文字列比范を実行するず、䞍芁な割り圓おが実行されたす。
CA1863: 䜿甚 CompositeFormat 曞匏蚭定のコストを削枛するには、CompositeFormat むンスタンスをキャッシュし、String.Format たたは StringBuilder.AppendFormat の匕数ずしお䜿いたす。
CA1864: Dictionary.TryAdd(TKey, TValue) メ゜ッドを優先する Dictionary<TKey,TValue>.ContainsKey(TKey) ず Dictionary<TKey,TValue>.Add は䞡方ずも怜玢を実行したすが、これは冗長です。 Dictionary<TKey,TValue>.TryAddを呌び出す方が効率的で、倀が远加されたかどうかを瀺すboolが返されたす。 キヌが既に存圚する堎合、TryAdd はキヌの倀を䞊曞きしたせん。
CA1865-CA1867: char 型のオヌバヌロヌドを䜿甚する char 型のオヌバヌロヌドは、1 文字の文字列に察しおより高いパフォヌマンスを発揮するオヌバヌロヌドです。
CA1868: セットに察する Contains の䞍芁な呌び出し ISet<T>.Add(T) ず ICollection<T>.Remove(T) は䞡方ずも怜玢を実行するため、ICollection<T>.Contains(T) の事前の呌び出しは冗長になりたす。 Add(T) たたは Remove(T) を盎接呌び出すず、項目が远加されたか削陀されたかを瀺すブヌル倀が返されるため、より効率的です。
CA1869: JsonSerializerOptions むンスタンスのキャッシュず再利甚 シリアル化たたは逆シリアル化に JsonSerializerOptions のロヌカル むンスタンスを䜿甚するず、コヌドが耇数回実行されたずきに、アプリケヌションのパフォヌマンスが倧幅に䜎䞋する可胜性がありたす。これは、System.Text.Json によっお、シリアル化関連のメタデヌタが指定されたむンスタンスに内郚的にキャッシュされるためです。
CA1870: キャッシュされた SearchValues むンスタンスを䜿甚する キャッシュされた SearchValues<T> むンスタンスを䜿甚するず、倀を IndexOfAny たたは ContainsAny に盎接枡すよりも効率的です。
CA1871: null 蚱容構造䜓を ArgumentNullException.ThrowIfNull に枡さないように ArgumentNullException.ThrowIfNull は objectを受け入れるため、null 蚱容構造䜓を枡すず、倀がボックス化される可胜性がありたす。
CA1872: Convert.ToHexString に基づく呌び出しチェヌンよりもConvert.ToHexStringLowerずBitConverter.ToStringを優先したす バむトを 16 進文字列衚珟に゚ンコヌドする堎合は、 Convert.ToHexString たたは Convert.ToHexStringLower を䜿甚したす。 これらのメ゜ッドは、ダッシュや BitConverter.ToString を眮き換えるために String.Replace を String.ToLower ず組み合わせお䜿甚するよりも、効率的でメモリ割り圓お効率にも優れおいたす。
CA1873: コストの高いログ蚘録を回避する 倚くの堎合、ログ蚘録が無効になっおいるか、ログ レベルに蚭定されおいるため、匕数のログ蚘録に䞍芁な評䟡が行われたす。
CA1874: 䜿甚 Regex.IsMatch Regex.IsMatch は Regex.Match(...).Success よりも簡単か぀高速です。
CA1875: 䜿甚 Regex.Count Regex.Count は Regex.Matches(...).Count よりも簡単か぀高速です。
CA1877: 'Path.Combine' たたは 'Path.Join' オヌバヌロヌドを䜿甚する 耇数の Path.Combine 操䜜たたは Path.Join 操䜜が入れ子になっおいる堎合は、パフォヌマンスず読みやすさを向䞊させるために、1 ぀の操䜜に折りたたむこずができたす。
CA1878: 読み取り時の配列フィヌルドよりも ReadOnlySpan プロパティを優先する プラむベヌト静的読み取り専甚定数配列フィヌルドは、C# コンパむラがマネヌゞド配列の割り圓おを回避できるように、 ReadOnlySpan<T> プロパティに眮き換えるこずができたす。
CA2000:スコヌプを倱う前にオブゞェクトを砎棄 䟋倖的なむベントが発生するずオブゞェクトのファむナラむザヌを実行できないため、オブゞェクトに察するすべおの参照がスコヌプ倖になる前に、オブゞェクトを明瀺的に砎棄する必芁がありたす。
CA2002: 識別性の匱いオブゞェクトをロックしないこず アプリケヌション ドメむンの境界を越えおオブゞェクトに盎接アクセスできる堎合、そのオブゞェクトの ID は䞍十分ず衚珟されたす。 スレッドで ID が䞍十分なオブゞェクトをロックしようずするず、ブロックされるこずがありたす。たずえば、異なるアプリケヌション ドメむンの別スレッドで、既に同じオブゞェクトがロックされおいる堎合です。
CA2007:タスクを盎接埅機しないでください 非同期メ゜ッドは を盎接Taskしたす。 非同期メ゜ッドで Task を盎接埅機するず、タスクを䜜成したのず同じスレッドで継続が発生したす。 この動䜜はパフォヌマンスの面で倧きな負担が生じ、その結果 UI スレッドでデッドロックが発生する可胜性がありたす。 Task.ConfigureAwait(Boolean) を呌び出しお継続の意図を瀺すこずを怜蚎しおください。
CA2008:TaskScheduler を枡さずにタスクを䜜成しない タスクの䜜成たたは継続の操䜜で、TaskScheduler パラメヌタヌを指定しないメ゜ッド オヌバヌロヌドを䜿甚しおいたす。
CA2009: ImmutableCollection 倀に察しお ToImmutableCollection を呌び出さないでください ToImmutable メ゜ッドが System.Collections.Immutable 名前空間から倉曎できないコレクションで䞍必芁に呌び出されたした。
CA2011: セッタヌ内でプロパティを割り圓おたせん プロパティ自身の set アクセサヌ内で、そのプロパティに誀っお倀が代入されたした。
CA2012: ValueTask を正しく䜿甚する必芁がありたす メンバヌの呌び出しから返される ValueTasks は、盎接埅機される必芁がありたす。 ValueTask を耇数回䜿甚しようずしたり、完了する前に結果に盎接アクセスしようずするず、䟋倖や砎損が発生する可胜性がありたす。 このような ValueTask を無芖するず、機胜バグが瀺され、パフォヌマンスが䜎䞋する可胜性がありたす。
CA2013: 倀の型ず共に ReferenceEquals を䜿甚しないでください System.Object.ReferenceEquals を䜿甚しお倀を比范するずきに、objA ず objB が倀の型である堎合、この 2 ぀は ReferenceEquals メ゜ッドに枡される前にボックス化されたす。 ぀たり、objA ず objB が同じ倀の型のむンスタンスを衚しおいる堎合でも、ReferenceEquals メ゜ッドからは false が返されたす。
CA2014: ルヌプ内で stackalloc を䜿甚したせん stackalloc によっお割り圓おられたスタック領域は、珟圚のメ゜ッド呌び出しの終了時にのみ解攟されたす。 これをルヌプ内で䜿甚するず、スタックが無限に増加し、最終的にスタック オヌバヌフロヌ状態が発生する可胜性がありたす。
CA2015: MemoryManager から掟生した型にはファむナラむザヌを定矩したせん<T> MemoryManager<T>から掟生した型にファむナラむザヌを远加するず、Span<T>がただ䜿甚されおいる間にメモリを解攟できる堎合がありたす。
CA2016: CancellationToken パラメヌタヌを受け取るメ゜ッドに転送する CancellationToken パラメヌタヌを 1 ぀を取るメ゜ッドに転送しお操䜜のキャンセル通知が適切に䌝達されるようにするか、たたは CancellationToken.None を明瀺的に枡しお意図的にトヌクンを䌝達しないこずを指定したす。
CA2017: パラメヌタヌ カりントが䞀臎したせん ログ メッセヌゞ テンプレヌトで指定されたパラメヌタヌの数が、名前付きプレヌスホルダヌの数ず䞀臎したせん。
CA2018: count に察する Buffer.BlockCopy の匕数で、コピヌするバむト数を指定する必芁がある Buffer.BlockCopy を䜿甚するずき、count 匕数では、コピヌするバむト数を指定したす。 Array.Length は、その芁玠のサむズが正確に 1 バむトの配列䞊の count 芁玠にのみ䜿甚したす。 byte、sbyte、および bool には、サむズが 1 バむトの芁玠がありたす。
CA2019: ThreadStatic フィヌルドでむンラむン初期化を䜿甚しないでください ThreadStaticAttribute で泚釈が付けられたフィヌルドはむンラむンで初期化される、たたは明瀺的に static (Visual Basic では Shared) コンストラクタヌで初期化されたす。
CA2020: IntPtr/UIntPtr の組み蟌み挔算子によっお発生する動䜜倉曎を防止する .NET 7 で远加されたいく぀かの組み蟌み挔算子の動䜜が、.NET 6 以前のバヌゞョンのナヌザヌ定矩挔算子ずは異なりたす。 オヌバヌフロヌ䞭に unchecked コンテキストでスロヌしおいた䞀郚の挔算子が、checked コンテキスト内でラップされない限り、スロヌしなくなりたす。 以前は checked コンテキストでスロヌしなかった䞀郚の挔算子が、unchecked コンテキスト内でラップされない限りスロヌするようになりたす。
CA2021: 互換性のない型を指定しお Enumerable.Cast<T> たたは Enumerable.OfType<T> を呌び出さない Enumerable.Cast<TResult>(IEnumerable) たたは Enumerable.OfType<TResult>(IEnumerable) の呌び出しで、入力コレクションの型ず互換性のない型パラメヌタヌが指定されおいたす。
CA2022: Stream.Read で読み取りを䞍正確にしないでください Stream.Readを呌び出すず、芁求されたバむト数よりも少ないバむト数が返される可胜性があり、戻り倀がチェックされおいない堎合、コヌドの信頌性が䜎䞋する可胜性がありたす。
CA2023: メッセヌゞ テンプレヌトの波括匧が無効です メッセヌゞ テンプレヌトに存圚する䞭かっこが無効です。 メッセヌゞ テンプレヌト内の波括匧は、すべお有効な開始波括匧および終了波括匧であるか、゚スケヌプされおいるこずを確認しおください。
CA2024: 非同期メ゜ッドで StreamReader.EndOfStream を䜿甚しないでください このプロパティ StreamReader.EndOfStream は、デヌタがバッファヌに栌玍されおいない堎合に、意図しない同期ブロッキングを匕き起こす可胜性がありたす。 代わりに、StreamReader.ReadLineAsync() を盎接䜿甚したす。ストリヌムの末尟に到達するず null が返されたす。
CA2025: IDisposable むンスタンスを未確認のタスクに枡さないでください 非同期タスクがIDisposableむンスタンスを䜿甚するず、砎棄された埌でもそれらのむンスタンスを長く䜿甚する堎合がありたす。 むンスタンスが砎棄される前に、それらのむンスタンスを䜿甚するタスクが完了しおいるこずを確認したす。
CA2026: JsonDocument.Parse() よりも JsonElement.Parse を優先したす。RootElement JsonElement.Parseを呌び出すよりも、JsonDocument.Parse().RootElementを盎接呌び出す方が効率的です。
CA2100:SQL ク゚リのセキュリティ脆匱性を確認 メ゜ッドに枡された文字列匕数から構築された文字列を䜿甚しお System.Data.IDbCommand.CommandText プロパティが蚭定されおいたす。 この芏則では、文字列匕数にナヌザヌ入力が含たれおいるこずが想定されおいたす。 ナヌザヌ入力から構築された SQL コマンド文字列には、SQL 泚入攻撃に察する脆匱性がありたす。
CA2101: P/Invoke 文字列匕数に察しおマヌシャリングを指定したす プラットフォヌム呌び出しメンバヌが、郚分信頌の呌び出し元を蚱可し、文字列パラメヌタヌを持ち、さらにその文字列を明瀺的にマヌシャリングしおいたせん。 これはセキュリティ䞊の脆匱性ずなる可胜性がありたす。
CA2109:衚瀺するむベント ハンドラヌを確認したす パブリックたたはプロテクトのむベント ハンドラヌ メ゜ッドが怜出されたした。 むベント ハンドラヌ メ゜ッドは、絶察に必芁な堎合を陀き公開しないでください。
CA2119:プラむベヌト むンタヌフェむスを満たすメ゜ッドをシヌルしたす 継承可胜なパブリック型により、internal (Visual Basic では Friend) むンタヌフェむスのオヌバヌラむド可胜なメ゜ッド実装が提䟛されたす。 この芏則違反を修正するには、アセンブリの倖偎でメ゜ッドがオヌバヌラむドされないようにしたす。
CA2153: 砎損状態䟋倖の凊理を回避したす 砎損状態䟋倖 (CSE) は、メモリの砎損がプロセス内に存圚しおいるこずを瀺したす。 プロセスをクラッシュさせるのではなくこれらの䟋倖をキャッチするこずは、攻撃者が砎損したメモリ領域にセキュリティ䞊の匱点を芋出すこずができた堎合に、セキュリティ䞊の脆匱性ずなる可胜性がありたす。
CA2200: スタックの詳现を保持するために再スロヌする 䟋倖が再送出され、throw 文でその䟋倖が明瀺的に指定されたす。 throw ステヌトメントで䟋倖を指定しお䟋倖が再スロヌされるず、䟋倖をスロヌした元のメ゜ッドず珟圚のメ゜ッドの間で呌び出されたメ゜ッドの䞀芧は倱われたす。
CA2201: 予玄された䟋倖の皮類を発生させたせん これにより、元の゚ラヌの怜出およびデバッグが困難になりたす。
CA2207:倀型のスタティック フィヌルドのむンラむンを初期化したす 倀型で明瀺的な静的コンストラクタヌを宣蚀しおいたす。 この芏則違反を修正するには、静的デヌタが宣蚀されたずき、および静的コンストラクタヌを削陀するずきに、静的デヌタをすべお初期化したす。
CA2208:匕数の䟋倖を正しくむンスタンス化したす ArgumentExceptionたたは掟生した䟋倖型の既定の (パラメヌタヌなしの) コンストラクタヌに察しお呌び出しが行われるか、ArgumentExceptionから掟生した䟋倖型のパラメヌタヌ化されたコンストラクタヌに正しくない文字列匕数が枡されたす。
CA2211:非定数フィヌルドは衚瀺されたせん 定数でも読み取り専甚でもない静的フィヌルドは、スレッド セヌフではありたせん。 このようなフィヌルドぞのアクセスは、慎重に制埡しおください。たた、クラス オブゞェクトぞのアクセスを同期するには、高床なプログラミング技術が必芁です。
CA2213:砎棄可胜なフィヌルドは砎棄されなければなりたせん System.IDisposable を実装する型が、IDisposable も実装する型を持぀フィヌルドを宣蚀しおいたす。 このフィヌルドの Dispose メ゜ッドは、宣蚀しおいる型の Dispose メ゜ッドから呌び出されおいたせん。
CA2214:コンストラクタヌのオヌバヌラむド可胜なメ゜ッドを呌び出したせん コンストラクタヌが仮想メ゜ッドを呌び出すず、メ゜ッドを呌び出すむンスタンスのコンストラクタヌが実行されおいない可胜性がありたす。
CA2215:Dispose メ゜ッドが基底クラスの Dispose を呌び出す必芁がありたす 型が砎棄可胜な型から継承しおいる堎合は、その型自身の Dispose メ゜ッドから基底型の Dispose メ゜ッドを呌び出す必芁がありたす。
CA2216:砎棄可胜な型はファむナラむザヌを宣蚀しなければなりたせん System.IDisposable を実装し、アンマネヌゞ リ゜ヌスの䜿甚を提案するフィヌルドが含たれる型が、Object.Finalize で蚘述されおいるようにファむナラむザヌを実装しおいたせん。
CA2217: enums を FlagsAttribute に蚭定したせん 倖郚から参照できる列挙型が FlagsAttribute でマヌクされ、その列挙型に、2 の环乗でもなく、その列挙型で定矩されおいる他の倀の組み合わせでもない倀が 1 ぀以䞊含たれおいたす。
CA2218: Equals をオヌバヌラむドする堎合は、GetHashCode もオヌバヌラむドしたす パブリック型で System.Object.Equals をオヌバヌラむドしおいたすが、System.Object.GetHashCode をオヌバヌラむドしおいたせん。
CA2219: exception 句に䟋倖を発生させないでください finally 句たたは fault 句で䟋倖が発生するず、アクティブな䟋倖が新しい䟋倖によっお隠されたす。 filter 句で䟋倖が発生するず、ランタむムがその䟋倖を暗黙的にキャッチしたす。 これにより、元の゚ラヌの怜出およびデバッグが困難になりたす。
CA2224: 等倀挔算子をオヌバヌロヌドする堎合は Equals をオヌバヌラむドしたす パブリック型で等倀挔算子が実装されおいたすが、System.Object.Equals がオヌバヌラむドされおいたせん。
CA2225:挔算子オヌバヌロヌドには名前付けされた代替が存圚したす 挔算子のオヌバヌロヌドが怜出され、予想される名前の代替メ゜ッドが怜出されたせんでした。 名前付きの代替メンバヌによっお、挔算子ず同じ機胜ぞアクセスできるようになりたす。たた、挔算子のオヌバヌロヌドをサポヌトしおいない蚀語でプログラミングする堎合でも、その代替メンバヌを䜿甚できたす。
CA2226:挔算子は察称型オヌバヌロヌドを含たなければなりたせん 型で等倀挔算子たたは非等倀挔算子を実装し、逆の働きをする挔算子を実装しおいたせん。
CA2227:Collection プロパティは読み取り専甚でなければなりたせん 曞き蟌み可胜なコレクション プロパティにより、ナヌザヌはコレクションを異なるコレクションで眮換できたす。 読み取り専甚プロパティは、コレクションを眮換できないようにしたすが、個別のメンバヌが蚭定されるこずは回避できたせん。
CA2229:シリアル化コンストラクタヌを実装したす この芏則違反を修正するには、シリアル化コンストラクタヌを実装したす。 sealed クラスの堎合はコンストラクタヌを private にし、そうでない堎合は protected にしたす。
CA2231: ValueType.Equals をオヌバヌラむドする際は、等倀挔算子をオヌバヌロヌドする 倀型は、Object.Equals をオヌバヌラむドしおいたすが、等倀挔算子を実装しおいたせん。
CA2234:文字列の代わりに System.Uri オブゞェクトを枡したす "uri"、"URI"、"urn"、"URN"、"url"、たたは "URL" ずいう名前を持぀文字列パラメヌタヌが指定されおいるメ゜ッドに察しお、呌び出しが行われたした。 そのメ゜ッドの型宣蚀に察応するメ゜ッドのオヌバヌロヌドが存圚し、それに察しお System.Uri パラメヌタヌが指定されおいたす。
CA2235:すべおのシリアル化䞍可胜なフィヌルドを蚭定したす シリアル化できない型のむンスタンス フィヌルドが、シリアル化できる型で宣蚀されおいたす。
CA2237:ISerializable 型を SerializableAttribute に蚭定したす 型が共通蚀語ランタむムでシリアル化できるず認識されるようにするには、型を SerializableAttribute 属性でマヌクする必芁がありたす。型が ISerializable むンタヌフェむスの実装を通じおカスタムのシリアル化ルヌチンを䜿甚しおいる堎合でも、マヌクする必芁がありたす。
CA2241:曞匏蚭定メ゜ッドに正しい匕数を提䟛 System.String.Format に枡される匕数 format に、各オブゞェクトの匕数に察応する曞匏指定項目が含たれおいたせん (その逆も考えられたす)。
CA2242: NaN かどうかを正しくテストする この匏が Single.Nan たたは Double.Nan に察しお倀をテストしおいたす。 倀をテストするには、Single.IsNan(Single) たたは Double.IsNan(Double) を䜿甚したす。
CA2243:属性文字列リテラルは、正しく解析する必芁がありたす 属性のリテラル文字列パラメヌタヌが URL、GUID、たたはバヌゞョンずしお正しく解析されたせん。
CA2244: むンデックス付き芁玠の初期化を重耇させたせん オブゞェクト初期化子に、定数むンデックスが同じむンデックス付き芁玠の初期化子が耇数ありたす。 最埌の初期化子を陀くすべおの初期化子は冗長です。
CA2245: プロパティをそれ自䜓に割り圓おたせん プロパティが誀っおそれ自䜓に割り圓おられたした。
CA2246: 同じステヌトメントにシンボルずそのメンバヌを割り圓おたせん 同じステヌトメントでシンボルずそのメンバヌ、぀たりフィヌルドたたはプロパティを代入するこずは掚奚されおいたせん。 メンバヌ アクセスが代入前のシンボルの叀い倀を䜿甚するのか、このステヌトメントの代入からの新しい倀を䜿甚するのかが明確ではありたせん。
CA2247: TaskCompletionSource コンストラクタヌに枡された匕数は、TaskContinuationOptions 列挙型ではなく、TaskCreationOptions 列挙型にする必芁がありたす TaskCompletionSource には、基になるタスクを制埡する TaskCreationOptions を䜿甚するコンストラクタヌず、そのタスクに栌玍されおいるオブゞェクトの状態を䜿甚するコンストラクタヌがありたす。 TaskCreationOptions の代わりに TaskContinuationOptions を誀っお枡すず、呌び出しでオプションが状態ずしお凊理されたす。
CA2248: 正しい enum 匕数を Enum.HasFlag に指定したす HasFlag メ゜ッドに匕数ずしお枡された列挙型が呌び出し元の列挙型ず異なりたす。
CA2249:String.IndexOf の代わりに String.Contains を䜿甚するこずを怜蚎したす 郚分文字列が存圚するかどうかを確認するために結果を䜿甚する string.IndexOf の呌び出しは、string.Contains で眮き換えるこずができたす。
CA2250: ThrowIfCancellationRequested を䜿甚したす ThrowIfCancellationRequested は、トヌクンが取り消されおいるかどうかを自動的にチェックし、されおいる堎合は OperationCanceledException をスロヌしたす。
CA2251: String.Equals の代わりに String.Compare を䜿甚したす String.Equals の結果を 0 ず比范する代わりに、String.Compare を䜿甚したほうがより明確であり、速い可胜性がありたす。
CA2252: プレビュヌ機胜をオプトむンする プレビュヌ API を䜿甚する前に、プレビュヌ機胜をオプトむンしたす。
CA2253: 名前付きプレヌスホルダヌを数倀にするこずはできたせん ログ メッセヌゞ テンプレヌトの名前付きプレヌスホルダヌは、数字のみで構成するこずはできたせん。
CA2254: テンプレヌトは静的な匏にする必芁がありたす ログ メッセヌゞ テンプレヌトは、呌び出しによっお異なるべきではありたせん。
CA2255: ModuleInitializer 属性をラむブラリ内で䜿甚しないでください モゞュヌル初期化子は、アプリケヌション コヌドの実行が開始される前にアプリケヌションのコンポヌネントが初期化されるようにするために、アプリケヌション コヌドで䜿甚するこずを想定しおいたす。
CA2256: 芪むンタヌフェむスで宣蚀されたすべおのメンバヌは、DynamicInterfaceCastableImplementation 属性むンタヌフェむスに実装されおいる必芁がありたす DynamicInterfaceCastableImplementationAttribute の属性がある型は、IDynamicInterfaceCastable 型を実装する型のむンタヌフェむス実装ずしお機胜したす。 結果ずしお、継承されたむンタヌフェむスに定矩されおいるすべおのメンバヌの実装を提䟛する必芁がありたす。IDynamicInterfaceCastable を実装する型からは、他の方法ではそれが提䟛されないためです。
CA2257: DynamicInterfaceCastableImplementationAttribute を持぀むンタヌフェヌスで定矩されたメンバヌは static する必芁がありたす。 IDynamicInterfaceCastableを実装する型はメタデヌタに動的むンタヌフェむスを実装しない可胜性があるため、この型で定矩されおいる明瀺的な実装ではないむンスタンス むンタヌフェむス メンバヌの呌び出しは実行時に倱敗する可胜性がありたす。 ランタむム ゚ラヌを回避するために、新しいむンタヌフェむス メンバヌを static マヌクしたす。
CA2258: Visual Basic での DynamicInterfaceCastableImplementation むンタヌフェむスの提䟛はサポヌトされおいたせん 機胜的 DynamicInterfaceCastableImplementationAttribute 属性付きむンタヌフェむスを提䟛するには、Visual Basic でサポヌトされおいない Default Interface Members 機胜が必芁になりたす。
CA2259: ThreadStatic が静的フィヌルドでのみ䜿甚されおいるこずを確認しおください ThreadStaticAttribute は、 static (Visual Basic の堎合は Shared) フィヌルドにのみ圱響したす。 むンスタンス フィヌルドに適甚した堎合、 属性は動䜜に圱響したせん。
CA2260: 汎甚数孊むンタヌフェむスを正しく実装する 汎甚的な数匏むンタヌフェむスでは、掟生型自䜓を自己反埩する皮類のパラメヌタヌに䜿甚する必芁がありたす。
CA2261: ConfigureAwaitOptions.SuppressThrowing を Task<TResult> ず共に䜿甚しない この ConfigureAwaitOptions.SuppressThrowing オプションは、無効な Task<TResult> を返す可胜性があるため、ゞェネリック TResult ではサポヌトされおいたせん。
CA2262: MaxResponseHeadersLength を正しく蚭定する MaxResponseHeadersLength の倀が正しく指定されおいるこずを確認したす。 この倀はキロバむト単䜍です。
CA2263: 型がわかっおいる堎合はゞェネリック オヌバヌロヌドを優先する ゞェネリック オヌバヌロヌドを䜿甚するず、型がわかっおいる堎合に System.Type 匕数を枡す方が適しおいたす。これは、コンパむル時のチェックが改善された、よりクリヌンでタむプ セヌフなコヌドが促進されるためです。
CA2264: ArgumentNullException.ThrowIfNull には null 以倖の倀を枡さないでください ArgumentNullException.ThrowIfNull は、枡された匕数が null のずきにスロヌしたす。 null にならない構造䜓や、nameof() および new などの匏など、特定の構文に぀いおは null になるこずがないため、ArgumentNullException.ThrowIfNull は決しお䟋倖をスロヌするこずはありたせん。
CA2265: Span<T> を null たたは default ず比范しないでください スパンず null たたは default を比范しおも、意図したずおりに動䜜しない堎合がありたす。 default nullリテラルは暗黙的にSpan<T>.Emptyに倉換されたす。
CA2266: ファむル ベヌスのプログラム ゚ントリ ポむントは、次で始たる必芁がありたす #! ファむルベヌスのプログラムが耇数のファむルで構成されおいる堎合、゚ントリ ポむント ファむルは、他のむンクルヌド ファむルず明確に区別するために、shebang (#!) 行で始たる必芁がありたす。
CA2267: ファむル ベヌスのプログラム ディレクティブ倀の空癜文字を匕甚笊で囲む ファむル ベヌスのプログラム #: ディレクティブの倀には、匕甚笊で囲たれおいない空癜が含たれおいたす。 匕甚笊で囲たれおいない圢匏は非掚奚です。は、空癜を含む倀を二重匕甚笊で囲んで、明確に解析されるようにしたす。
CA2300:安党ではないデシリアラむザヌ BinaryFormatter を䜿甚しないでください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2301:最初に BinaryFormatter.Binder を蚭定しないで BinaryFormatter.Deserialize を呌び出さないでください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2302:BinaryFormatter.Deserialize を呌び出す前に BinaryFormatter.Binder が蚭定されおいるこずを確認したす 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2305:安党ではないデシリアラむザヌ LosFormatter を䜿甚しないでください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2310:安党ではないデシリアラむザヌ NetDataContractSerializer を䜿甚しないでください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2311:最初に NetDataContractSerializer.Binder を蚭定しないで逆シリアル化しないでください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2312:NetDataContractSerializer.Binder を蚭定しおから逆シリアル化しおください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2315:安党ではないデシリアラむザヌ ObjectStateFormatter を䜿甚しないでください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2321:SimpleTypeResolver を䜿っお JavaScriptSerializer で逆シリアル化しないでください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2322:逆シリアル化する前に JavaScriptSerializer が SimpleTypeResolver によっお初期化されおいないこずを確認しおください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2326: None 以倖の TypeNameHandling 倀は䜿甚しないでください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2327: 安党でない JsonSerializerSettings を䜿甚しないでください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2328: JsonSerializerSettings が安党であるこずを確認しおください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2329: セキュリティで保護されおいない構成が JsonSerializer で䜿甚されおいる堎合は、逆シリアル化を行わないでください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2330: 逆シリアル化の際に、JsonSerializer の構成は確実にセキュリティで保護しおください 安党でない逆シリアラむザヌは、信頌されおいないデヌタを逆シリアル化するずきに脆匱です。 攻撃者がシリアル化されたデヌタを倉曎しお予期されない型を远加し、悪意のある副䜜甚を持぀オブゞェクトを挿入する可胜性がありたす。
CA2350:DataTable.ReadXml() の入力が信頌されおいるこずを確認しおください 信頌されおいない入力を䜿甚しお DataTable を逆シリアル化するず、攻撃者が悪意のある入力を䜜成しおサヌビス拒吊攻撃を仕掛ける可胜性がありたす。 䞍明なリモヌト コヌド実行の脆匱性が存圚する可胜性がありたす。
CA2351:DataSet.ReadXml() の入力が信頌されおいるこずを確認しおください 信頌されおいない入力を䜿甚しお DataSet を逆シリアル化するず、攻撃者が悪意のある入力を䜜成しおサヌビス拒吊攻撃を仕掛ける可胜性がありたす。 䞍明なリモヌト コヌド実行の脆匱性が存圚する可胜性がありたす。
CA2352: シリアル化可胜な型の安党でない DataSet たたは DataTable は、リモヌト コヌド実行攻撃に察しお脆匱になる可胜性がありたす SerializableAttribute でマヌクされたクラスたたは構造䜓に DataSet たたは DataTable フィヌルドたたはプロパティは含たれおいたすが、GeneratedCodeAttribute はありたせん。
CA2353: シリアル化可胜な型の安党でない DataSet たたは DataTable XML シリアル化属性たたはデヌタ コントラクト属性でマヌクされたクラスたたは構造䜓に、DataSet たたは DataTable フィヌルドたたはプロパティが含たれおいたす。
CA2354:逆シリアル化されたオブゞェクト グラフの安党でない DataSet たたは DataTable は、リモヌト コヌド実行攻撃に察しお脆匱になる可胜性がありたす System.Runtime.Serialization.IFormatter シリアル化で逆シリアル化し、キャストされた型のオブゞェクト グラフに DataSet たたは DataTable を含んでいる可胜性がありたす。
CA2355: 逆シリアル化されたオブゞェクト グラフの安党でない DataSet たたは DataTable キャストされたたたは指定された型のオブゞェクト グラフに DataSet たたは DataTable を含んでいる可胜性があるずきに逆シリアル化しおいたす。
CA2356: Web で逆シリアル化されたオブゞェクト グラフ内の安党でない DataSet たたは DataTable System.Web.Services.WebMethodAttributeたたはSystem.ServiceModel.OperationContractAttributeを持぀メ゜ッドには、DataSetたたはDataTableを参照するパラメヌタヌがありたす。
CA2361: DataSet.ReadXml() を含む自動生成クラスが信頌されおいないデヌタで䜿甚されおいないこずを確認しおください 信頌されおいない入力を䜿甚しお DataSet を逆シリアル化するず、攻撃者が悪意のある入力を䜜成しおサヌビス拒吊攻撃を仕掛ける可胜性がありたす。 䞍明なリモヌト コヌド実行の脆匱性が存圚する可胜性がありたす。
CA2362: シリアル化可胜な自動生成型の安党でない DataSet たたは DataTable は、リモヌト コヌド実行攻撃に察しお脆匱になる可胜性がありたす BinaryFormatter で信頌されおいない入力を逆シリアル化し、逆シリアル化されたオブゞェクト グラフに DataSet たたは DataTable が含たれおいる堎合、攻撃者が悪意のあるペむロヌドを䜜成しお、リモヌト コヌド実行攻撃を仕掛ける可胜性がありたす。
CA3001:SQL むンゞェクションの脆匱性のコヌド レビュヌ 信頌されおいない入力ず SQL コマンドを凊理するずきには、SQL むンゞェクション攻撃に泚意しおください。 SQL むンゞェクション攻撃では、悪意のある SQL コマンドが実行され、アプリケヌションのセキュリティず敎合性が損なわれる可胜性がありたす。
CA3002:XSS の脆匱性のコヌド レビュヌ Web 芁求からの信頌されおいない入力を凊理するずきには、クロスサむト スクリプティング (XSS) 攻撃に泚意しおください。 XSS 攻撃によっお信頌されおいない入力が未加工の HTML 出力に挿入され、攻撃者が悪意のあるスクリプトを実行するか、Web ペヌゞのコンテンツを故意に倉曎できるようになりたす。
CA3003: ファむル パス むンゞェクションの脆匱性がないかコヌドを確認する Webリク゚ストからの信頌できない入力を凊理する際は、ファむルぞのパスを指定するずきに、ナヌザヌが制埡できる入力を䜿甚しないよう泚意しおください。
CA3004:情報挏えいの脆匱性のコヌド レビュヌ 䟋倖情報を公開するず、攻撃者はアプリケヌションの内郚に関する分析情報を入手しお、悪甚できる他の脆匱性を芋぀けるこずができたす。
CA3005: LDAP むンゞェクションの脆匱性のコヌドを確認する 信頌されおいない入力を凊理する堎合は、ラむトりェむト ディレクトリ アクセス プロトコル (LDAP) むンゞェクション攻撃に泚意しおください。 攻撃者は、情報ディレクトリに察しお悪意のある LDAP ステヌトメントを実行するおそれがありたす。 ディレクトリ サヌビスにアクセスするための動的 LDAP ステヌトメントを、ナヌザヌによる入力を䜿甚しお䜜成するアプリケヌションは、特に脆匱です。
CA3006:プロセス コマンド むンゞェクションの脆匱性のコヌド レビュヌ 信頌されおいない入力を凊理するずきには、コマンド むンゞェクション攻撃に泚意しおください。 コマンド むンゞェクション攻撃では、基になるオペレヌティング システムに察しお悪意のあるコマンドが実行され、サヌバヌのセキュリティず敎合性が損なわれる可胜性がありたす。
CA3007:オヌプン リダむレクトの脆匱性のコヌド レビュヌ 信頌されおいない入力を凊理するずきには、オヌプン リダむレクトの脆匱性に泚意しおください。 攻撃者はオヌプン リダむレクトの脆匱性を悪甚し、Web サむトを利甚しお正芏の URL を衚し、疑っおいない蚪問者をフィッシングなどの悪意のある Web ペヌゞにリダむレクトできたす。
CA3008:XPath むンゞェクションの脆匱性のコヌド レビュヌ 信頌されおいない入力を凊理するずきには、XPath むンゞェクション攻撃に泚意しおください。 信頌されおいない入力を䜿甚しお XPath ク゚リを構築するず、攻撃者が悪意を持っおク゚リを操䜜しお意図しない結果を返し、ク゚リされた XML の内容を開瀺する可胜性がありたす。
CA3009:XML むンゞェクションの脆匱性のコヌド レビュヌ 信頌されおいない入力を凊理するずきには、XML むンゞェクション攻撃に泚意しおください。
CA3010:XAML むンゞェクションの脆匱性のコヌド レビュヌ 信頌されおいない入力を凊理するずきには、XAML むンゞェクション攻撃に泚意しおください。 XAML は、オブゞェクトのむンスタンス化ず実行を盎接衚すマヌクアップ蚀語です。 ぀たり、XAML に䜜成された芁玠ずシステム リ゜ヌス (ネットワヌク アクセス、ファむル システム IO など) の間でやり取りできたす。
CA3011:DLL むンゞェクションの脆匱性のコヌド レビュヌ 信頌できない入力を凊理するずきには、信頌されおいないコヌドの読み蟌みに泚意しおください。 Web アプリケヌションが信頌されおいないコヌドを読み蟌む堎合、攻撃者は悪意のある DLL をプロセスに挿入し、悪意のあるコヌドを実行できる可胜性がありたす。
CA3012:RegEx むンゞェクションの脆匱性のコヌド レビュヌ 信頌されおいない入力を凊理するずきには、正芏衚珟むンゞェクション攻撃に泚意しおください。 攻撃者は、正芏衚珟むンゞェクションを䜿甚しお正芏衚珟を故意に倉曎したり、正芏衚珟を意図しない結果ず䞀臎させたりする可胜性がありたす。たた、正芏衚珟によっお CPU を過床に消費し、サヌビス拒吊攻撃を行う可胜性もありたす。
CA3061:URL でスキヌマを远加したせん 危険な倖郚参照を匕き起こす可胜性があるため、Add メ゜ッドの安党でないオヌバヌロヌドを䜿甚しないでください。
CA3075:安党ではない DTD の凊理 安党でない DTDProcessing むンスタンスを䜿甚する堎合、たたは倖郚゚ンティティ ゜ヌスを参照しおいる堎合、パヌサヌは信頌されおいない入力を受け入れ、機密情報を攻撃者に開瀺する可胜性がありたす。
CA3076:安党ではない XSLT スクリプトの実行 .NET アプリケヌションで拡匵スタむルシヌト蚀語倉換 (XSLT) を安党に実行しないず、信頌されおいない URI 参照がプロセッサによっお解決され、攻撃者に機密情報が開瀺され、サヌビス拒吊攻撃やクロスサむト攻撃が発生する可胜性がありたす。
CA3077:API のデザむン、XML ドキュメント、および XML テキスト リヌダヌでの安党ではない凊理 XMLDocument ず XMLTextReader から掟生する API をデザむンする堎合、DtdProcessing にご泚意ください。 倖郚゚ンティティ ゜ヌスを参照たたは解決するずき、たたは XML で安党でない倀を蚭定するずきに安党でない DTDProcessing むンスタンスを䜿甚するず、情報挏えいに぀ながる可胜性がありたす。
CA3147:ValidateAntiForgeryToken で動詞ハンドラヌをマヌクしたす ASP.NET MVC コントロヌラヌを蚭蚈するずきには、クロスサむト リク゚スト フォヌゞェリ攻撃に泚意しおください。 クロスサむト リク゚スト フォヌゞェリ攻撃では、認蚌されたナヌザヌから ASP.NET MVC コントロヌラヌに悪意のある芁求が送信される可胜性がありたす。
CA5350:脆匱な暗号アルゎリズムを䜿甚しないでください 珟圚、さたざたな理由で匱い暗号化アルゎリズムずハッシュ関数が䜿甚されおいたすが、保護察象のデヌタの機密性や敎合性を保蚌するためにこれらを䜿甚しないでください。 このルヌルは、コヌドで TripleDES、SHA1、たたは RIPEMD160 アルゎリズムが怜出されるずトリガヌされたす。
CA5351: 砎られた暗号アルゎリズムを䜿甚しないでください 砎られた暗号アルゎリズムはセキュアであるずは芋なされず、それらを䜿甚しないこずを匷くお勧めしたす。 このルヌルは、コヌドに MD5 ハッシュ アルゎリズムや、DES か RC2 のいずれかの暗号化アルゎリズムが怜出されるずトリガヌされたす。
CA5358:安党ではない暗号モヌドを䜿甚しないでください 安党ではない暗号モヌドを䜿甚しないでください
CA5359: 蚌明曞の怜蚌を無効にしないでください 蚌明曞を䜿甚するず、サヌバヌの ID を認蚌できたす。 クラむアントでは、サヌバヌ蚌明曞を怜蚌し、芁求が意図したずおりのサヌバヌに送信されるようにする必芁がありたす。 ServerCertificateValidationCallback によっお垞に true が返されるず、すべおの蚌明曞が怜蚌に成功したす。
CA5360: 逆シリアル化で危険なメ゜ッドを呌び出さないでください 安党でない逆シリアル化は、信頌されおいないデヌタを䜿甚しおアプリケヌションのロゞックが悪甚されたり、サヌビス拒吊 (DoS) 攻撃が仕掛けられたり、逆シリアル化されたずきに任意のコヌドが実行されたりするずきに発生する脆匱性です。 悪意のあるナヌザヌが自分の管理䞋にある信頌されおいないデヌタをアプリケヌションで逆シリアル化しおいるずきに、これらの逆シリアル化機胜を悪甚するこずがよくありたす。 具䜓的には、逆シリアル化の過皋で危険なメ゜ッドを呌び出したす。 安党でない逆シリアル化攻撃が成功するず、攻撃者は DoS 攻撃、認蚌回避、リモヌトでのコヌド実行などの攻撃を仕掛ける可胜性がありたす。
CA5361: 匷力な暗号の Schannel の䜿甚を無効にしたせん Switch.System.Net.DontEnableSchUseStrongCrypto を true に蚭定するず、送信トランスポヌト局セキュリティ (TLS) 接続で䜿甚される暗号が匱くなりたす。 暗号が匱くなるず、アプリケヌションずサヌバヌ間の通信の機密性が損なわれ、攻撃者が機密デヌタを簡単に傍受できるようになりたす。
CA5362: 逆シリアル化されたオブゞェクト グラフで可胜性のある参照サむクル 信頌されおいないデヌタを逆シリアル化するず、逆シリアル化されたオブゞェクト グラフを凊理するすべおのコヌドで、無限ルヌプに入るこずなく参照サむクルを凊理する必芁がありたす。 これには、逆シリアル化コヌルバックの䞀郚であるコヌドず、逆シリアル化が完了した埌にオブゞェクト グラフを凊理するコヌドの䞡方が含たれたす。 そうしないず、攻撃者が参照サむクルを含む悪意のあるデヌタを䜿甚しおサヌビス拒吊攻撃を仕掛ける可胜性がありたす。
CA5363:芁求の怜蚌を無効にしたせん 芁求の怜蚌は、ASP.NET の機胜の 1 ぀で、HTTP 芁求を調べ、その芁求にクロスサむトスクリプティングを含むむンゞェクション攻撃に぀ながる可胜性のある危険なコンテンツが含たれおいないかどうかを確認したす。
CA5364: 非掚奚のセキュリティ プロトコルを䜿甚しないでください トランスポヌト局セキュリティ (TLS) では、コンピュヌタヌ間の通信を保護し、ハむパヌテキスト転送プロトコル セキュア (HTTPS) ずよく䜵甚されたす。 TLS の叀いプロトコル バヌゞョンは TLS 1.2 や TLS 1.3 よりも安党性が䜎く、新しい脆匱性が芋぀かる可胜性が高くなりたす。 リスクを最小限に抑えるために、叀いプロトコル バヌゞョンを䜿甚しないようにしおください。
CA5365: HTTP ヘッダヌのチェックを無効にしたせん HTTP ヘッダヌのチェックにより、レスポンスヘッダヌに含たれるキャリッゞリタヌン文字 \r ず改行文字 \n を゚ンコヌドできるようになりたす。 この゚ンコヌドは、ヘッダヌに含たれる信頌されおいないデヌタを゚コヌするアプリケヌションを悪甚するむンゞェクション攻撃を回避するのに圹立ちたす。
CA5366: DataSet Read XML に XmlReader を䜿甚したす 信頌されおいないデヌタを含む XML を読み取るために DataSet を䜿甚するず、危険な倖郚参照が読み蟌たれる可胜性がありたす。これは、セキュリティで保護されたリゟルバヌたたは DTD 凊理を無効にした XmlReader を䜿甚しお制限する必芁がありたす。
CA5367: ポむンタヌ フィヌルドを持぀型をシリアル化したせん この芏則では、ポむンタヌ フィヌルドたたはプロパティを持぀シリアル化可胜なクラスがあるかどうかをチェックしたす。 静的メンバヌ、NonSerializedAttribute でマヌクされたフィヌルドなど、シリアル化できないメンバヌがポむンタヌになる可胜性がありたす。
CA5368: ペヌゞから掟生したクラスに ViewStateUserKey を蚭定したす ViewStateUserKey プロパティを蚭定するず、識別子を個別のナヌザヌの view-state 倉数に割り圓おお、攻撃者が倉数を䜿甚した攻撃を実行できないようにするこずで、アプリケヌションに察する攻撃を防ぐこずができたす。 そうしない堎合、クロスサむト リク゚スト フォヌゞェリに察する脆匱性が生じたす。
CA5369:逆シリアル化に XmlReader を䜿甚したす 信頌されおいない DTD スキヌマず XML スキヌマを凊理するず、危険な倖郚参照を読み蟌むこずができたす。これは、セキュリティで保護されたリゟルバヌを䜿甚するか、DTD および XML むンラむン スキヌマ凊理を無効にしお XmlReader を䜿甚しお制限する必芁がありたす。
CA5370:読み取りの怜蚌に XmlReader を䜿甚したす 信頌されおいない DTD スキヌマず XML スキヌマを凊理するず、危険な倖郚参照を読み蟌める可胜性がありたす。 この危険な読み蟌みは、XmlReader を安党なリゟルバヌず共に䜿甚するか、DTD ず XML むンラむン スキヌマ凊理を無効にしお䜿甚するこずにより制限する必芁がありたす。
CA5371:スキヌマの読み取りに XmlReader を䜿甚したす 信頌されおいない DTD スキヌマず XML スキヌマを凊理するず、危険な倖郚参照を読み蟌める可胜性がありたす。 XmlReader を安党なリゟルバヌず共に䜿甚するか、DTD ず XML むンラむン スキヌマ凊理を無効にしお䜿甚するこずにより、この凊理を制限したす。
CA5372:XPathDocument に XmlReader を䜿甚したす 信頌されおいないデヌタから XML を凊理するず、危険な倖郚参照が読み蟌たれる可胜性がありたす。これは、セキュリティで保護されたリゟルバヌたたは DTD 凊理が無効になっおいる XmlReader を䜿甚しお制限できたす。
CA5373:廃止されたキヌ掟生関数を䜿甚したせん この芏則では、匱いキヌ掟生メ゜ッド System.Security.Cryptography.PasswordDeriveBytes ず Rfc2898DeriveBytes.CryptDeriveKey の呌び出しを怜出したす。 System.Security.Cryptography.PasswordDeriveBytes で匱いアルゎリズム PBKDF1 が䜿甚されたした。
CA5374: XslTransform を䜿甚したせん この芏則では、System.Xml.Xsl.XslTransform がコヌドでむンスタンス化されるかどうかをチェックしたす。 System.Xml.Xsl.XslTransform は叀いため、䜿甚しないでください。
CA5375: アカりントの Shared Access Signature を䜿甚しないでください アカりントの SAS では、サヌビス SAS で蚱可されおいない BLOB コンテナヌ、テヌブル、キュヌおよびファむル共有の読み取り、曞き蟌みおよび削陀操䜜ぞのアクセスを委任できたす。 ただし、コンテナヌレベルのポリシヌをサポヌトしおおらず、付䞎されるアクセス蚱可に察する柔軟性ず制埡力は高くありたせん。 悪意のあるナヌザヌがその SAS を入手するず、ストレヌゞ アカりントは容易に䟵害される可胜性がありたす。
CA5376: SharedAccessProtocol HttpsOnly を䜿甚したす SAS は HTTP を介しおプレヌン テキストで転送できない機密デヌタです。
CA5377: コンテナヌ レベルのアクセス ポリシヌを䜿甚したす コンテナヌレベルのアクセス ポリシヌは、い぀でも倉曎たたは取り消すこずができたす。 このため、付䞎されるアクセス蚱可をより柔軟に制埡できたす。
CA5378: ServicePointManagerSecurityProtocols を無効にしたせん Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols を true に蚭定するず、Windows Communication Framework (WCF) のトランスポヌト局セキュリティ (TLS) 接続が TLS 1.0 に制限されたす。 このバヌゞョンの TLS は非掚奚になる予定です。
CA5379: 匱いキヌ掟生関数アルゎリズムを䜿甚しない Rfc2898DeriveBytes クラスでは、既定で SHA1 アルゎリズムを䜿甚したす。 SHA256 たたはそれ以䞊を䜿甚しお、コンストラクタヌの䞀郚のオヌバヌロヌドで䜿甚するハッシュ アルゎリズムを指定する必芁がありたす。 ただし、HashAlgorithm プロパティには get アクセサヌしかなく、overridden 修食子はありたせん。
CA5380:ルヌト ストアに蚌明曞を远加したせん この芏則では、蚌明曞を信頌されたルヌト蚌明機関の蚌明曞ストアに远加するコヌドを怜出したす。 既定では、信頌されたルヌト蚌明機関の蚌明曞ストアは、Microsoft ルヌト蚌明曞プログラムの芁件を満たした䞀連の公的 CA で構成されおいたす。
CA5381:蚌明曞がルヌト ストアに远加されおいないこずを確認したす この芏則では、蚌明曞を信頌されたルヌト蚌明機関の蚌明曞ストアに远加する可胜性があるコヌドを怜出したす。 既定では、信頌されたルヌト蚌明機関の蚌明曞ストアは、Microsoft ルヌト蚌明曞プログラムの芁件を満たした䞀連の公的蚌明機関 (CA) で構成されおいたす。
CA5382: ASP.NET Core で安党な Cookie を䜿甚したす HTTPS 経由で䜿甚できるアプリケヌションでは、セキュリティで保護された Cookie を䜿甚する必芁がありたす。぀たり、Cookie は Secure Sockets Layer (SSL) のみを䜿甚しお転送する必芁があるこずをブラりザヌに瀺す必芁がありたす。
CA5383: ASP.NET Core で安党な Cookie を確実に䜿甚したす HTTPS 経由で䜿甚できるアプリケヌションでは、セキュリティで保護された Cookie を䜿甚する必芁がありたす。぀たり、Cookie は Secure Sockets Layer (SSL) のみを䜿甚しお転送する必芁があるこずをブラりザヌに瀺す必芁がありたす。
CA5384: デゞタル眲名アルゎリズム (DSA) を䜿甚したせん DSA は、匱い非察称暗号化アルゎリズムです。
CA5385: 十分なキヌ サむズの Rivest–Shamir–Adleman (RSA) アルゎリズムを䜿甚したす 2048 ビットよりも小さい RSA キヌは、ブルヌト フォヌス攻撃に察する脆匱性が高くなりたす。
CA5386: SecurityProtocolType 倀のハヌドコヌドを避けたす トランスポヌト局セキュリティ (TLS) では、コンピュヌタヌ間の通信を保護し、ハむパヌテキスト転送プロトコル セキュア (HTTPS) ずよく䜵甚されたす。 プロトコル バヌゞョン TLS 1.0 ず TLS 1.1 は非掚奚で、TLS 1.2 ず TLS 1.3 が珟行のバヌゞョンです。 今埌、TLS 1.2 ず TLS 1.3 は非掚奚になる可胜性がありたす。 アプリケヌションをセキュリティで保護し続けるために、プロトコル バヌゞョンをハヌドコヌティングしないようにし、少なくずも .NET Framework v4.7.1 を察象にしおください。
CA5387: 反埩回数が十分でない匱いキヌ掟生関数は䜿甚したせん この芏則では、反埩回数が 100,000 回未満の Rfc2898DeriveBytes によっお暗号化キヌが生成されたかどうかをチェックしたす。 反埩回数が倚いほど、生成された暗号化キヌを掚枬しようずする蟞曞攻撃を緩和するのに圹立ちたす。
CA5388: 匱いキヌ掟生関数を䜿甚する堎合は十分な反埩回数を確保しおください この芏則では、反埩回数が 100,000 未満の Rfc2898DeriveBytes によっお暗号化キヌが生成されたかどうかを確認したす。 反埩回数が倚いほど、生成された暗号化キヌを掚枬しようずする蟞曞攻撃を緩和するのに圹立ちたす。
CA5389:アヌカむブ項目のパスをタヌゲット ファむル システム パスに远加したせん ファむル パスは盞察パスの堎合があり、想定されるファむル システムのタヌゲット パス以倖でファむル システムぞのアクセスが可胜になる可胜性がありたす。これは、lay-and-wait の技法によっお悪意のある構成倉曎ずリモヌト コヌドの実行に぀ながりたす。
CA5390: 暗号化キヌをハヌドコヌディングしたせん 察称アルゎリズムを成功させるには、送信偎ず受信偎だけに秘密キヌを䌝える必芁がありたす。 キヌがハヌドコヌディングされおいるず、簡単に怜出できたす。 コンパむルされたバむナリでも、悪意のあるナヌザヌが簡単に抜出できたす。 秘密キヌが䟵害されるず、暗号テキストを盎接埩号化できるようになるため、保護されおいない状態になりたす。
CA5391: ASP.NET Core MVC コントロヌラヌで停造防止トヌクンを䜿甚したす 停造防止トヌクンを怜蚌せずに、 POST、 PUT、 PATCH、たたは DELETE 芁求を凊理するず、クロスサむト リク゚スト フォヌゞェリ攻撃に察しお脆匱になる可胜性がありたす。 クロスサむト リク゚スト フォヌゞェリ攻撃では、認蚌されたナヌザヌから ASP.NET Core MVC コントロヌラヌに悪意のある芁求が送信される可胜性がありたす。
CA5392: P/Invoke に察しお DefaultDllImportSearchPaths 属性を䜿甚したす 既定では、DllImportAttribute を䜿甚しおいる P/Invoke 関数では、ラむブラリが読み蟌むための珟圚の䜜業ディレクトリを含むいく぀かのディレクトリを粟査したす。 これは特定のアプリケヌションでセキュリティ䞊の問題を匕き起こし、DLL のハむゞャックに぀ながる可胜性がありたす。
CA5393: 安党でない DllImportSearchPath 倀を䜿甚しないでください 既定の DLL 怜玢ディレクトリずアセンブリ ディレクトリに悪意のある DLL が存圚する可胜性がありたす。 たたは、アプリケヌションが実行されおいる堎所に応じお、アプリケヌションのディレクトリに悪意のある DLL が存圚する可胜性がありたす。
CA5394: 安党でないランダム床を䜿甚したせん 暗号に匱い擬䌌乱数ゞェネレヌタヌを䜿甚するず、攻撃者は生成されるセキュリティに䟝存する倀を予枬できる可胜性がありたす。
CA5395: アクション メ゜ッドの HttpVerb 属性がありたせん デヌタの䜜成、線集、削陀、たたはそれ以倖の倉曎を行うすべおのアクション メ゜ッドは、停造防止属性を䜿甚しおクロスサむト リク゚スト フォヌゞェリ攻撃から保護する必芁がありたす。 GET 操䜜の実行は、副䜜甚がなく、氞続化されたデヌタを倉曎しない、安党な操䜜である必芁がありたす。
CA5396: HttpCookie で HttpOnly を true に蚭定したす 高床な防埡手段ずしお、セキュリティ䞊泚意が必芁な HTTP Cookie が、必ず HttpOnly ずしおマヌクされるようにしおください。 これは、スクリプトから Cookie ぞのアクセスを Web ブラりザヌで蚱可しおはならないこずを瀺しおいたす。 挿入された悪意のあるスクリプトは、Cookie を盗むための䞀般的な方法です。
CA5397:非掚奚の SslProtocols 倀を䜿甚したせん トランスポヌト局セキュリティ (TLS) では、コンピュヌタヌ間の通信を保護し、ハむパヌテキスト転送プロトコル セキュア (HTTPS) ずよく䜵甚されたす。 TLS の叀いプロトコル バヌゞョンは TLS 1.2 や TLS 1.3 よりも安党性が䜎く、新しい脆匱性が芋぀かる可胜性が高くなりたす。 リスクを最小限に抑えるために、叀いプロトコル バヌゞョンを䜿甚しないようにしおください。
CA5398:ハヌドコヌディングされた SslProtocols 倀を回避したす トランスポヌト局セキュリティ (TLS) では、コンピュヌタヌ間の通信を保護し、ハむパヌテキスト転送プロトコル セキュア (HTTPS) ずよく䜵甚されたす。 プロトコル バヌゞョン TLS 1.0 ず TLS 1.1 は非掚奚で、TLS 1.2 ず TLS 1.3 が珟行のバヌゞョンです。 今埌、TLS 1.2 ず TLS 1.3 は非掚奚になる可胜性がありたす。 アプリケヌションをセキュリティで保護し続けるために、プロトコル バヌゞョンをハヌドコヌティングしないようにしおください。
CA5399: HttpClient 蚌明曞倱効リストの確認を確実に無効にしたす 倱効した蚌明曞は信頌されおいたせん。 攻撃者が HTTPS 通信で悪意のあるデヌタを枡すか、機密デヌタを盗むために䜿甚する可胜性がありたす。
CA5400: HttpClient 蚌明曞倱効リストの確認を決しお無効にしないでください 倱効した蚌明曞は信頌されおいたせん。 攻撃者が HTTPS 通信で悪意のあるデヌタを枡すか、機密デヌタを盗むために䜿甚する可胜性がありたす。
CA5401: 既定以倖の IV で CreateEncryptor を䜿甚したせん 察称暗号化では、蟞曞攻撃を防ぐために、反埩䞍胜な初期化ベクトルを垞に䜿甚する必芁がありたす。
CA5402: 既定の IV で CreateEncryptor を䜿甚したす 察称暗号化では、蟞曞攻撃を防ぐために、反埩䞍胜な初期化ベクトルを垞に䜿甚する必芁がありたす。
CA5403:蚌明曞をハヌドコヌディングしない data たたは rawData コンストラクタヌの X509Certificate たたは X509Certificate2 パラメヌタヌがハヌドコヌディングされおいたす。
CA5404: トヌクンの怜蚌チェックを無効にしないでください トヌクンの怜蚌を制埡する TokenValidationParameters プロパティを false に蚭定しおはいけたせん。
CA5405: デリゲヌトでトヌクンの怜蚌を垞にスキップしないでください AudienceValidator たたは LifetimeValidator に割り圓おられおいるコヌルバックからは、垞に true が返されたす。
IL3000: 1 ぀のファむルずしお発行するずきにアセンブリ ファむル パスにアクセスしないようにする 単䞀ファむルずしお発行するずきにアセンブリ ファむル パスにアクセスしないでください。
IL3001: 単䞀ファむルずしお発行するずきにアセンブリ ファむル パスにアクセスしないようにする 単䞀ファむルずしお発行するずきにアセンブリ ファむル パスにアクセスしないでください。
IL3002: 1 ぀のファむルずしお発行するずきに、 RequiresAssemblyFilesAttribute で泚釈が付けられたメンバヌを呌び出さないようにする 1 ぀のファむルずしお発行するずきに、 RequiresAssemblyFilesAttribute で泚釈が付けられたメンバヌを呌び出さないようにする
IL3003: RequiresAssemblyFilesAttribute 泚釈は、すべおのむンタヌフェむス実装たたはオヌバヌラむドで䞀臎する必芁がありたす。 RequiresAssemblyFilesAttribute 泚釈は、すべおのむンタヌフェむス実装たたはオヌバヌラむドで䞀臎する必芁がありたす。
IL3005: RequiresAssemblyFilesAttribute をアプリケヌション ゚ントリ ポむントに盎接配眮するこずはできたせん。 RequiresAssemblyFilesAttribute をアプリケヌション ゚ントリ ポむントに盎接配眮するこずはできたせん。

Legend

次の衚は、参照ドキュメントの各ルヌルに぀いお提䟛されおいる情報の皮類を瀺しおいたす。

Item Description
タむプ 芏則の TypeName。
ルヌル識別子 芏則の䞀意の識別子。 RuleId ず Category は、゜ヌス コヌド内で譊告を抑制するために䜿甚されたす。
Category 芏則のカテゎリ (たずえば、セキュリティ)。
修正が砎壊的か非砎壊的か ルヌル違反の修正が砎壊的倉曎かどうか。 重倧な倉曎ずは、違反の原因ずなったタヌゲットに䟝存するアセンブリが新しい固定バヌゞョンで再コンパむルされないこず、たたは倉曎のために実行時に倱敗する可胜性があるこずを意味したす。 耇数の修正が利甚可胜で、そのうち少なくずも1぀が砎壊的倉曎で、少なくずも1぀が非砎壊的倉曎である堎合は、「Breaking」ず「Non-breaking」の䞡方が指定されたす。
Cause 芏則に埓っお譊告が生成される原因になった特定のマネヌゞド コヌド。
Description 譊告の背景にある問題に぀いお説明したす。
違反の修正方法 芏則に適合し、譊告が生成されないように゜ヌス コヌドを倉曎する方法に぀いお説明したす。
どのようなずきに譊告を抑制するか 芏則による譊告を抑制しおも安党な堎合に぀いお説明したす。
コヌド䟋 芏則に違反する䟋ず、芏則に適合する修正した䟋を瀺したす。
関連芏則 関連するルヌル。