C# のコードアノテーション属性のリスト
JetBrains.Annotations フレームワークは、以下で説明する多くの属性を提供します。
これらの属性をコードで使用するには、C# ソースコードのアノテーションセクションの説明に従って JetBrains.Annotations を参照する必要があります。
アノテーション属性
CanBeNullAttribute
マークされた要素の値が null になることがあることを示します。そのため、使用前に null のチェックが必要です。
サンプル
詳細は、C# の値と null 可能性の分析を参照してください。
NotNullAttribute
マークされた要素の値が決して null でないことを示します。
サンプル
詳細は、C# の値と null 可能性の分析を参照してください。
ItemNotNullAttribute
IEnumerable から派生した型のシンボルだけでなく、Task および Lazy クラスのシンボルにも適用して、コレクション項目、Task.Result プロパティ、または Lazy.Value プロパティの値が決して null にならないことを示すことができます。
サンプル
詳細は、C# の値と null 可能性の分析を参照してください。
ItemCanBeNullAttribute
IEnumerable から派生した型のシンボルだけでなく、Task および Lazy クラスのシンボルにも適用して、コレクション項目、Task.Result プロパティ、または Lazy.Value プロパティの値が null になれることを示すことができます。
サンプル
詳細は、C# の値と null 可能性の分析を参照してください。
StringFormatMethodAttribute
マークされたメソッドが形式パターンと (オプションの) 引数によって文字列を構築することを示します。フォーマット文字列を受け入れるパラメーターはコンストラクターで指定する必要があります。フォーマット文字列は System.String.Format(System.IFormatProvider,System.String,System.Object[])(英語) -like 形式である必要があります。
サンプル
関連事項
メンバー
#ctor(System.String)アノテーション付きメソッドのどのパラメーターをフォーマット文字列として扱うかを指定します。
詳細は、カスタム文字列フォーマットメソッドの場合を参照してください。
StructuredMessageTemplateAttribute
マークされたパラメーターがメッセージテンプレートであり、プレースホルダが次の引数に出現順に置き換えられることを示します。
サンプル
関連事項
詳細は、C# 文字列リテラルのコード分析を参照してください。
ValueProviderAttribute
このアノテーションを使用して、アノテーション付きプロパティ / フィールド / パラメーターの値を持つ静的フィールドまたは静的フィールドを含む型を指定します。指定された型は補完候補を改善するために使用されます。
サンプル
ValueRangeAttribute
整数値が指定された区間に収まることを示します。複数の交差しない間隔を指定することができます。区間境界の値は区間に含まれます。
サンプル
NonNegativeValueAttribute
積分値がゼロを下回ることがないことを示します。
サンプル
詳細は、C# の整数値の解析を参照してください。
InvokerParameterNameAttribute
関数の引数が文字列リテラルであり、呼び出し側関数のパラメーターの 1 つと一致する必要があることを示します。このアノテーションは、System.ArgumentNullException(英語) コンストラクターの string paramName パラメーターなどのパラメーターに使用されます。
サンプル
NotifyPropertyChangedInvocatorAttribute
System.ComponentModel.INotifyPropertyChanged インターフェースを実装する型にメソッドが含まれており、このメソッドは一部のプロパティ値が変更されたことを通知するために使用されることを示します。
メソッドは静的でなく、サポートされているシグネチャーの 1 つに準拠する必要があります。
NotifyChanged(string)NotifyChanged(params string[])NotifyChanged{T}(Expression{Func{T}})NotifyChanged{T,U}(Expression{Func{T,U}})SetProperty{T}(ref T, T, string)
サンプル
生成される通知の例:
NotifyChanged("Property")NotifyChanged(() => Property)NotifyChanged((VM x) => x.Property)SetProperty(ref myField, value, "Property")
ContractAnnotationAttribute
メソッドの入力と出力間の依存関係を説明します。
構文
関数定義テーブルの構文:
FDT ::= FDTRow [;FDTRow]*
FDTRow ::= Input => Output | Output <= Input
Input ::= ParameterName: Value [, Input]*
Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value}
Value ::= true | false | null | notnull | canbenull
メソッドに単一の入力パラメーターがある場合、その名前は省略できます。
メソッド出力に halt (または void/nothing、これは同じ)を使用すると、メソッドが正常に戻らない(プロセスをスローまたは終了する)ことを意味します。
canbenull 値は出力パラメーターにのみ適用されます。
各 FDT 行に複数の [ContractAnnotation] を使用することも、セミコロンで区切られた行を持つ単一の属性を使用することもできます。行の順序は重要ではなく、すべての行の適用性がチェックされ、分析エンジンによって追跡される各プログラム状態ごとに適用されます。
サンプル
- [ContractAnnotation("=> halt")] public void TerminationMethod()
- [ContractAnnotation("null <= param:null")] // reverse condition syntax public string GetName(string surname)
- [ContractAnnotation("s:null => true")] public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty()
- // A method that returns null if the parameter is null, // and not null if the parameter is not null [ContractAnnotation("null => null; notnull => notnull")] public object Transform(object data)
- [ContractAnnotation("=> true, result: notnull; => false, result: null")] public bool TryParse(string s, out Person result)
詳細は、C# の契約のアノテーションを参照してください。
LocalizationRequiredAttribute
マークされた要素をローカライズする必要があるかどうかを示します。
サンプル
CannotApplyEqualityOperatorAttribute
マークされた型 (またはその派生型) の値は、== 演算子または != 演算子を使用して比較できないため、代わりに Equals() を使用する必要があることを示します。ただし、null との比較に == または != を使用することは常に許可されます。
サンプル
DefaultEqualityUsageAttribute
メソッドまたは型がアノテーション付き要素の等価メンバーを使用することを示します。
メソッドのジェネリクスパラメーターに適用された場合、このメソッドを呼び出すときにカスタム等価比較子が渡されない限り、アノテーションが付けられた型の等価性が使用されることを示します。属性は、メソッドのパラメーターまたは戻り値の型に直接適用して、等価性の使用を指定することもできます。型のジェネリクスパラメーターに適用された場合、型の等価性の使用はこの型内のどこでも発生する可能性があることを示します。そのため、カスタム等価性比較子がコンストラクターに渡されない限り、この型のインスタンス化は等価性の使用として扱われます。
サンプル
BaseTypeRequiredAttribute
ターゲット属性に適用される場合、ターゲット属性でマークされた型に対して、特定の型を実装または継承するための要件を指定します。
サンプル
UsedImplicitlyAttribute
マークされたシンボルが暗黙的に使用されていることを示します (リフレクション経由、外部ライブラリ内など)。そのため、このシンボルは使用状況チェックインスペクションによって無視されます。
ImplicitUseKindFlags と ImplicitUseTargetFlags を使用して、この属性の適用方法を構成できます。
サンプル
MeansImplicitUseAttribute
属性、型パラメーター、System.Type(英語) から割り当て可能な型のパラメーターに適用できます。属性に適用すると、装飾された属性は UsedImplicitlyAttribute と同じように動作します。型パラメーターまたは型 System.Type(英語) のパラメーターに適用される場合、対応する型が暗黙的に使用されることを示します。
PublicAPIAttribute
この属性は、削除すべきでない、未使用として報告すべきではない、公開されている API をマークすることを目的としています。
InstantHandleAttribute
呼び出されたメソッドがスタック上にあるときにパラメーターが完全に処理されたかどうかをコード分析エンジンに伝えます。パラメーターがデリゲートの場合、デリゲートはメソッドの実行中にのみ呼び出すことができることを示します (デリゲートは 0 回または複数回呼び出すことができますが、フィールドに格納されず、後で、含まれているメソッドが実行スタック上に存在しなくなったときに呼び出すことができます))。パラメーターが列挙可能な場合、メソッドの実行中にパラメーターが列挙されることを示します。RequireAwait が true の場合、属性はメソッド呼び出しが await 式にある場合にのみ有効になります。
メンバー
RequireAwaitこの属性を有効にするには、
await式でメソッド呼び出しを使用する必要があります。asyncメソッドのデリゲート / 列挙可能パラメーターに使用できます。
PureAttribute
メソッドが監視可能な状態変更を行わないことを示します。System.Diagnostics.Contracts.PureAttribute(英語) と同じ。
サンプル
MustUseReturnValueAttribute
メソッド呼び出しの戻り値を使用する必要があることを示します。
この属性で装飾されたメソッドは (純粋なメソッドとは対照的に) 状態を変更する可能性がありますが、戻り値を使用しないと意味がありません。
PureAttribute と同様に、この属性は、戻り値が使用されていない場合のメソッドの使用を検出できます。オプションで、警告を表示するときに使用するメッセージを指定できます。例:
.
MustDisposeResourceAttribute
リソースの破棄を使用サイトで処理する必要があることを示します。これは、リソースの所有権が呼び出し元に譲渡されることを意味します。このアノテーションを使用すると、使い捨て型またはそのコンストラクターに個別にアノテーションを付けることができ、この型の新しいインスタンスが作成されるすべてのコンテキストでリソースを破棄するための IDE コード分析が可能になります。ファクトリメソッドと out パラメーターには、使い捨て型の戻り値の処理が必要であることを示すアノテーションを付けることもできます。
この属性による入力パラメーターのアノテーションは意味がありません。
コンストラクターは、アノテーションが付けられている場合はその型からこの属性を継承しますが、委譲先の基本コンストラクター (存在する場合) からは継承しません。
リソースの破棄は、using (resource) ステートメント、using var 宣言、明示的な Dispose() 呼び出し、または HandlesResourceDisposalAttribute 属性でアノテーションが付けられたパラメーターに引数としてリソースを渡すことによって行われます。
メンバー
Valuefalseに設定すると、リソースの破棄は必須ではありません。明示的な[MustDisposeResource(false)]アノテーションの主な使用例は、継承のアノテーションを緩和することです。
このアノテーションは、破棄分析と対応するインレイヒントをトリガーします。
HandlesResourceDisposalAttribute
メソッドまたはクラスインスタンスがリソースの所有権を取得し、使用後にそれを破棄することを示します。
この属性による out パラメーターのアノテーションは意味がありません。
インスタンスメソッドにこの属性がアノテーション付けされている場合、対応するリソースインスタンスのリソース破棄を処理していることを意味します。
フィールドまたはプロパティにこの属性がアノテーション付けされている場合、この型がリソースを所有し、リソースの破棄を適切に処理することを意味します (たとえば、独自の IDisposable 実装内)。
RequireStaticDelegateAttribute
このアノテーションにより、パフォーマンスが重要な API に対して割り当てのないデリゲートの使用パターンを強制することができます。このアノテーションがデリゲート型のパラメーターに適用されると、IDE はこのパラメーターの入力引数をチェックします。* ラムダ式または匿名メソッドが引数として渡されるとき、IDE は、渡されたクロージャにそれを含むクロージャがキャプチャーされていないことを検証します。ローカル変数を使用すると、コンパイラーはデリゲートインスタンスをキャッシュしてヒープ割り当てを回避できます。それ以外の場合は、警告が生成されます。* メソッド名またはローカル関数名が引数として渡されると、常にデリゲートインスタンスのヒープ割り当てが発生するため、IDE は警告を出します。
C# 9.0+ コードでは、IDE は、言語 / コンパイラーによって提供される同様の分析を利用するために、匿名関数に static 修飾子でアノテーションを付けることも提案します。
ProvidesContextAttribute
その型の値を取得する他のすべての方法の代わりに使用する必要がある型のメンバーまたはパラメーターを示します。このアノテーションは、「コンテキスト」値が評価されてどこかに保存されている場合、つまり、この値を取得する他のすべての方法を既存の方法と統合する必要がある場合に役立ちます。
サンプル
PathReferenceAttribute
パラメーターが Web プロジェクト内のファイルまたはフォルダーへのパスであることを示します。パスは、Web ルート(〜)から始まる相対パスまたは絶対パスにすることができます。
SourceTemplateAttribute
この属性でマークされた拡張メソッドは、コード補完によって「ソーステンプレート」として処理されます。拡張メソッドが何らかの式で完了すると、そのソースコードは呼び出しサイトでテンプレートのように自動的に展開されます。
テンプレートメソッドの本体には、有効なソースコードや「$」で始まる特別なコメントを含めることができます。これらのコメント内のテキストは、テンプレートが適用されるときにソースコードとして追加されます。テンプレートパラメーターは、追加のメソッドパラメーターとして、または 2 つの '$' 記号で囲まれた識別子として使用できます。MacroAttribute 属性を使用してパラメーターのマクロを指定します。展開に使用する式はターゲットパラメーターで調整できます。
サンプル
この例では、forEach メソッドは列挙型のすべての値に対して使用可能なソーステンプレートであり、通常の C# foreach ステートメントを生成し、ブロック内にキャレットを配置します。
メンバー
Target展開ポイントで複数の式が使用可能な場合、テンプレートの実行のためにキャプチャーする式を指定できます。指定しない場合は、内部とみなされます。
MacroAttribute
SourceTemplateAttribute のパラメーターにマクロを指定できます。
この属性は、メソッド全体またはその追加パラメーターのいずれかに適用できます。マクロ式は式プロパティで定義されます。メソッドに適用される場合、ターゲットテンプレートパラメーターはターゲットプロパティで定義されます。パラメーターにマクロをサイレントに適用するには、Editable プロパティ値を -1 に設定します。
サンプル
属性をソーステンプレートメソッドに適用します。
属性をテンプレートメソッドパラメーターに適用します。
メンバー
Expressionテンプレートが展開されたときに SourceTemplateAttribute パラメーターに対して実行されるマクロを指定できます。
Editableテンプレートのデプロイ時に編集可能になるターゲットパラメーターの出現を指定できます。
ターゲットパラメーターがテンプレートで何回か使用されている場合、1 つの出現箇所だけが編集可能になります。他の発生は同期して変更されます。編集可能な出現箇所の 0 から始まるインデックスを指定するには、値> = 0 を使用します。テンプレートが展開されたときにパラメーターを編集できないようにするには、-1 を使用します。
TargetMacroAttribute がテンプレートメソッドに適用される場合、SourceTemplateAttribute のターゲットパラメーターを識別します。
CollectionAccessAttribute
コレクション型に対するメソッド、コンストラクターの呼び出し、プロパティへのアクセスがコレクションの内容にどのような影響を与えるかを示します。メソッドの戻り値に適用すると、返されたコレクションが呼び出し元専用に作成されるか (CollectionAccessType.UpdatedContent)、外部から読み取り / 更新できるか (CollectionAccessType.Read/CollectionAccessType.UpdatedContent) が示されます。CollectionAccessType を使用してアクセスタイプを指定します。
この属性を使用すると、すべてのコレクションメソッドにこの属性が設定されている場合にのみ意味があります。
サンプル
詳細は、C# でのコレクションアクセス分析を参照してください。
AssertionMethodAttribute
マークされたメソッドがアサーションメソッドであることを示します。つまり、条件の 1 つが満たされると制御フローが停止します。条件を設定するには、パラメーターの 1 つを AssertionConditionAttribute 属性でマークします。
AssertionConditionAttribute
アサーションメソッドの条件パラメーターを示します。メソッド自体は AssertionMethodAttribute 属性でマークされる必要があります。属性の必須引数はアサーション型です。
TerminatesProgramAttribute
マークされたメソッドが制御フローの実行を無条件に終了することを示します。例: 無条件に例外をスローする可能性があります。
LinqTunnelAttribute
メソッドが列挙が延期された純粋な LINQ メソッドであることを示します ( Enumerable.Select または Enumerable.Where など)。このアノテーションを使用すると、LINQ メソッドチェーンを分析することによって、デリゲート型のパラメーターの [InstantHandle] アノテーションを推論できます。
NoEnumerationAttribute
パラメーターとして渡された IEnumerable が列挙されていないことを示します。このアノテーションを使用して、「IEnumerable の複数列挙の可能性」インスペクションを抑制します。
サンプル
RegexPatternAttribute
マークされたパラメーター、フィールド、プロパティが正規表現パターンであることを示します。
LanguageInjectionAttribute
マークされたパラメーター、フィールド、プロパティが、指定された言語のコードフラグメントを含む文字列リテラルを受け入れることを示します。
サンプル
サンプル
メンバー
InjectedLanguage挿入されたコードフラグメントの言語を指定します。
InjectedLanguageName挿入されたコードフラグメントの言語名を指定します。
Prefix挿入された文字列リテラルの「前」にある文字列を指定します。
Suffix挿入された文字列リテラルに「続く」文字列を指定します。
NoReorderAttribute
IDE のメンバーの並べ替え機能が、マークされたクラスのメンバーを破棄しないようにします。
属性はメンバーの並べ替えパターンに記述する必要があります。
CodeTemplateAttribute
構造検索および置換構文を使用してコード検索パターンを定義します。これにより、特定のパターンに一致するコードブロックを検索し、必要に応じて置き換えることができます。
検索および置換パターンは、テキスト部分とプレースホルダーで構成されます。テキスト部分には、ターゲット言語で許可されている識別子のみを含める必要があり、完全に一致します (空白、タブ文字、改行は無視されます)。プレースホルダーを使用すると、ターゲットコードブロックの変数部分を一致させることができます。
プレースホルダーの形式は次のようになります: $placeholder_name$ - ここで、placeholder_name は任意の識別子です。定義済みのプレースホルダー:
$this$- 包含型の式$thisType$- 収容型$member$- 現在のメンバーのプレースホルダー$qualifier$- このプレースホルダーは置換パターンで使用でき、$member$プレースホルダーと一致する修飾子式を挿入するために使用できます。($qualifier$プレースホルダーが使用されている場合、$member$プレースホルダーは修飾された参照のみに一致することに注意してください。)$expression$- あらゆるタイプの表現$identifier$- 識別子のプレースホルダー$args$- 任意の数の引数$arg$- 単一の引数$arg1$ ... $arg10$- 単一の引数$stmts$- 任意の数のステートメント$stmt$- 単一のステートメント$stmt1$ ... $stmt10$- 単一のステートメント$name{Expression, 'Namespace.FooType'}$-Namespace.FooTypeタイプの式$expression{'Namespace.FooType'}$-Namespace.FooTypeタイプの式$name{Type, 'Namespace.FooType'}$-Namespace.FooType型$type{'Namespace.FooType'}$-Namespace.FooType型$statement{1,2}$- 1 つまたは 2 つのステートメント
サポートされている型の独自のプレースホルダーを定義し、各プレースホルダー型の引数を指定することもできます。これは、$name{type, arguments}$ 形式を使用して実行できます。ここで、name - はプレースホルダーの名前、type - はプレースホルダーの型 (次のいずれか: 式、型、識別子、ステートメント、引数、メンバー)、arguments - プレースホルダーの引数のリストです。各プレースホルダー型は独自の引数をサポートします。詳細については、以下の例を確認してください。名前に次の接頭辞のいずれかが付いている場合、プレースホルダーの種類は省略でき、プレースホルダー名から決定できます。
expr、expression - 式プレースホルダー、例:
$exprPlaceholder{}$、$expressionFoo{}$arg、argument - 引数プレースホルダー、例:
$argPlaceholder{}$、$argumentFoo{}$ident、identifier - 識別子のプレースホルダー、例:
$identPlaceholder{}$、$identifierFoo{}$stmt、ステートメント - ステートメントのプレースホルダー、例:
$stmtPlaceholder{}$、$statementFoo{}$type - タイプのプレースホルダー、例:
$typePlaceholder{}$、$typeFoo{}$member - メンバーのプレースホルダー、例:
$memberPlaceholder{}$、$memberFoo{}$
式のプレースホルダー引数:
expressionType - 一重引用符で囲まれた文字列値。一致する完全なタイプ名を指定します (デフォルトでは空の文字列)
正確なタイプ - ブール値。式の型が完全に一致するかどうかを指定します (デフォルトでは false)
例:
$myExpr{Expression, 'Namespace.FooType', true}$-Namespace.FooTypeタイプの式と完全に一致する式プレースホルダーを定義します。$myExpr{Expression, 'Namespace.FooType'}$-Namespace.FooTypeタイプの式、または暗黙的にNamespace.FooTypeに変換できる式に一致する式プレースホルダーを定義します。$myExpr{Expression}$- 任意のタイプの式に一致する式プレースホルダーを定義します。$exprFoo{'Namespace.FooType', true}$-Namespace.FooTypeタイプの式と完全に一致する式プレースホルダーを定義します。
プレースホルダー引数を入力します。
型 - 一重引用符で囲まれた文字列値。一致する完全な型名を指定します (デフォルトでは空の文字列)
正確なタイプ - ブール値。式の型が完全に一致するかどうかを指定します (デフォルトでは false)
例:
$myType{Type, 'Namespace.FooType', true}$-Namespace.FooType型と完全に一致する型プレースホルダーを定義します。$myType{Type, 'Namespace.FooType'}$-Namespace.FooType型、または暗黙的にNamespace.FooTypeに変換できる型に一致する型プレースホルダーを定義します。$myType{Type}$- 任意の型に一致する型プレースホルダーを定義します。$typeFoo{'Namespace.FooType', true}$-Namespace.FooType型と完全に一致する型プレースホルダーを定義します。
識別子プレースホルダー引数:
nameRegex - 一重引用符で囲まれた文字列値。照合に使用する正規表現を指定します (デフォルトでは空の文字列)
nameRegexCaseSensitive - ブール値。名前の正規表現で大文字と小文字を区別するかどうかを指定します (デフォルトでは true)
型 - 一重引用符で囲まれた文字列値。一致する完全なタイプ名を指定します (デフォルトでは空の文字列)
正確なタイプ - ブール値。式の型が完全に一致するかどうかを指定します (デフォルトでは false)
例:
$myIdentifier{Identifier, 'my.*', false, 'Namespace.FooType', true}$-my接頭辞で始まりNamespace.FooTypeタイプの識別子 (大文字と小文字を無視) に一致する識別子プレースホルダーを定義します。$myIdentifier{Identifier, 'my.*', true, 'Namespace.FooType', true}$-Namespace.FooTypeタイプのmy接頭辞で始まる識別子 (大文字と小文字を区別) に一致する識別子のプレースホルダーを定義します。$identFoo{'my.*'}$-my接頭辞で始まる識別子 (大文字と小文字を区別) に一致する識別子のプレースホルダーを定義します。
ステートメントプレースホルダー引数:
最小限の出現箇所 - 一致するステートメントの最小数 (- デフォルトでは -1)
maximalOccurrences - 一致するステートメントの最大数 (- デフォルトでは -1)
例:
$myStmt{Statement, 1, 2}$- 1 つまたは 2 つのステートメントに一致するステートメントプレースホルダーを定義します。$myStmt{Statement}$- 任意の数のステートメントに一致するステートメントプレースホルダーを定義します。$stmtFoo{1, 2}$- 1 つまたは 2 つのステートメントに一致するステートメントプレースホルダーを定義します。
引数プレースホルダー引数:
最小限の出現箇所 - 一致する引数の最小数 (- デフォルトでは -1)
maximalOccurrences - 一致する引数の最大数 (- デフォルトでは -1)
例:
$myArg{Argument, 1, 2}$- 1 つまたは 2 つの引数に一致する引数プレースホルダーを定義します。$myArg{Argument}$- 任意の数の引数に一致する引数プレースホルダーを定義します。$argFoo{1, 2}$- 1 つまたは 2 つの引数に一致する引数プレースホルダーを定義します。
メンバーのプレースホルダーの引数:
docId - 一重引用符で囲まれた文字列値。照合するメンバーの XML ドキュメント ID を指定します (デフォルトでは空)
例:
$myMember{Member, 'M:System.String.IsNullOrEmpty(System.String)'}$-System.String型のIsNullOrEmptyメンバーに一致するメンバープレースホルダーを定義します。$memberFoo{'M:System.String.IsNullOrEmpty(System.String)'}$-System.String型のIsNullOrEmptyメンバーに一致するメンバープレースホルダーを定義します。
メンバー
SearchTemplate構造的な検索パターン。
パターンにはテキスト部分が含まれており、ターゲット言語で許可されている識別子と、ターゲットコードブロックの可変部分と一致するプレースホルダーのみを含める必要があります。
Message検索パターンに一致するコードブロックが見つかったときに表示するメッセージ。
メッセージテキストの先頭に「エラー:」、「警告:」、「提案:」、または「ヒント:」の接頭辞を追加して、パターンの重大度を指定することもできます。置換テンプレートを使用したコードパターンは、デフォルトで「提案」重大度を持ちます。置換パターンが指定されていない場合、パターンの重大度は「警告」になります。
ReplaceTemplate一致したパターンを置換するために使用する置換パターン。
ReplaceMessageバルブに表示するメッセージを置き換えます。
FormatAfterReplaceコード置換後にコードフォーマットを適用します。
MatchSimilarConstructs類似のコードブロックを一致させる必要があるかどうか。
ShortenReferences名前空間のインポートディレクティブを自動的に挿入するか、テンプレートの適用後に冗長になる修飾子を削除します。
SuppressionKeyサプレッションキーとして使用する文字列。デフォルトでは、抑制キー
CodeTemplate_SomeType_SomeMemberが使用されます。ここで、「SomeType」および「SomeMember」は、この属性が適用される、関連付けられた包含型およびメンバーの名前です。
詳細は、C# で非推奨の API をレポートおよび更新するを参照してください。
IgnoreSpellingAndGrammarErrorsAttribute
このパラメーターの引数として渡された文字列リテラルのスペルエラーや文法エラーをチェックしないことを示します。
詳細については、「」を参照してください。
AspMvcActionAttribute
ASP.NET MVC 属性。パラメーターに適用すると、パラメーターが MVC アクションであることを示します。メソッドに適用すると、MVC アクション名はコンテキストから暗黙的に計算されます。System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String) に似たカスタムラッパーにこの属性を使用します。
AspMvcAreaAttribute
ASP.NET MVC 属性。マークされたパラメーターが MVC 領域であることを示します。System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String) に似たカスタムラッパーにこの属性を使用します。
AspMvcControllerAttribute
ASP.NET MVC 属性。パラメーターに適用すると、パラメーターが MVC コントローラーであることを示します。メソッドに適用すると、MVC コントローラー名はコンテキストから暗黙的に計算されます。System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String) に似たカスタムラッパーにこの属性を使用します。
AspMvcMasterAttribute
ASP.NET MVC 属性。マークされたパラメーターが MVC マスターであることを示します。System.Web.Mvc.Controller.View(String, String) に似たカスタムラッパーにこの属性を使用します。
AspMvcModelTypeAttribute
ASP.NET MVC 属性。マークされたパラメーターが MVC モデル型であることを示します。System.Web.Mvc.Controller.View(String, Object) に似たカスタムラッパーにこの属性を使用します。
AspMvcPartialViewAttribute
ASP.NET MVC 属性。パラメーターに適用すると、パラメーターが MVC の部分ビューであることを示します。メソッドに適用すると、MVC の部分ビュー名がコンテキストから暗黙的に計算されます。System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String) に似たカスタムラッパーにこの属性を使用します。
AspMvcSuppressViewErrorAttribute
ASP.NET MVC 属性。クラスまたはメソッド内の MVC ビューに対してインスペクションを無効にすることができます。
AspMvcDisplayTemplateAttribute
ASP.NET MVC 属性。パラメーターが MVC 表示テンプレートであることを示します。System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String) に似たカスタムラッパーにこの属性を使用します。
AspMvcEditorTemplateAttribute
ASP.NET MVC 属性。マークされたパラメーターが MVC エディターテンプレートであることを示します。System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String) に似たカスタムラッパーにこの属性を使用します。
AspMvcTemplateAttribute
ASP.NET MVC 属性。マークされたパラメーターが MVC テンプレートであることを示します。System.ComponentModel.DataAnnotations.UIHintAttribute(System.String) に似たカスタムラッパーにこの属性を使用します。
AspMvcViewAttribute
ASP.NET MVC 属性。パラメーターに適用すると、パラメーターが MVC ビューコンポーネントであることを示します。メソッドに適用すると、MVC ビュー名はコンテキストから暗黙的に計算されます。System.Web.Mvc.Controller.View(Object) に似たカスタムラッパーにこの属性を使用します。
AspMvcViewComponentAttribute
ASP.NET MVC 属性。パラメーターに適用すると、パラメーターが MVC ビューコンポーネント名であることを示します。
AspMvcViewComponentViewAttribute
ASP.NET MVC 属性。パラメーターに適用すると、パラメーターが MVC ビューコンポーネントビューであることを示します。メソッドに適用される場合、MVC ビューのコンポーネントビュー名はデフォルトです。
AspMvcActionSelectorAttribute
ASP.NET MVC 属性。属性のパラメーターに適用すると、このパラメーターが MVC アクション名であることを示します。
サンプル
RouteTemplateAttribute
マークされたパラメーター、フィールド、プロパティがルートテンプレートであることを示します。
この属性により、IDE は Web フレームワークのルートテンプレートの使用を認識して、構文のハイライト、コード補完、ナビゲーション、名前変更、文字列リテラルの他の機能を有効にすることができます。
RouteParameterConstraintAttribute
マークされた型がカスタムルートパラメーター制約であり、アプリケーションのスタートアップに ConstraintName という名前で登録されていることを示します。
ターゲット制約が特定の型のルートパラメーターのみに一致する場合は、ProposedType を指定できます。これにより、IDE はデフォルトの System.String の代わりに、指定された型のルートテンプレートでの使用箇所からメソッドのパラメーターを作成し、制約の提案された型が一致したパラメーターの型と競合するかどうかを確認できるようになります。
UriStringAttribute
マークされたパラメーター、フィールド、プロパティが URI 文字列であることを示します。
この属性により、アノテーション付きパラメーター、フィールド、プロパティに割り当てられた URI 文字列リテラルのコード補完、ナビゲーション、名前変更、その他の機能が有効になります。
AspRouteConventionAttribute
マークされたメソッドが ASP.NET のルーティング規則を宣言していることを示します。
IDE は、この属性でマークされたメソッドのすべての使用状況を分析し、補完、ナビゲーション、その他の機能へのすべてのルートを URI 文字列に追加します。
AspDefaultRouteValuesAttribute
マークされたメソッドパラメーターに、ASP.NET のルーティング規則の既定のルート値が含まれていることを示します。
AspRouteValuesConstraintsAttribute
マークされたメソッドパラメーターに、ASP.NET のルーティング規則のルート値に対する制約が含まれていることを示します。
AspRouteOrderAttribute
マークされたパラメーターまたはプロパティに、ASP.NET ルーティング属性によって提供されるルーティング順序が含まれていることを示します。
AspRouteVerbsAttribute
マークされたパラメーターまたはプロパティに、ASP.NET ルーティング属性によって提供される HTTP 動詞が含まれていることを示します。
AspAttributeRoutingAttribute
マークされた属性が ASP.NET の属性ルーティングに使用されることを示します。
IDE は、この属性でマークされた属性のすべての使用状況を分析し、補完、ナビゲーション、その他の機能へのすべてのルートを URI 文字列に追加します。
AspMinimalApiDeclarationAttribute
マークされたメソッドが ASP.NET Minimal API エンドポイントを宣言していることを示します。
IDE は、この属性でマークされたメソッドのすべての使用状況を分析し、補完、ナビゲーション、その他の機能へのすべてのルートを URI 文字列に追加します。
AspMinimalApiGroupAttribute
マークされたメソッドが ASP.NET Minimal API エンドポイントグループを宣言していることを示します。
AspMinimalApiHandlerAttribute
マークされたパラメーターに ASP.NET Minimal API エンドポイントハンドラーが含まれていることを示します。
AspMinimalApiImplicitEndpointDeclarationAttribute
マークされたメソッドに最小限の API エンドポイント宣言が含まれていることを示します。
IDE は、この属性でマークされたメソッドのすべての使用状況を分析し、属性で宣言されたすべてのルートを補完、ナビゲーション、URI 文字列上のその他の機能に追加します。
メンバー
QueryParametersエンドポイントに定義されたクエリパラメーターのコンマ区切りのリスト
RazorSectionAttribute
Razor 属性。マークされたパラメーターまたはメソッドが Razor セクションであることを示します。System.Web.WebPages.WebPageBase.RenderSection(String) に似たカスタムラッパーにこの属性を使用します。
XamlItemsControlAttribute
XAML 属性。ItemsSource プロパティを持ち、内部項目 DataContext 型解決を有効にするために ItemsControl -derived 型として扱われる必要がある型を示します。
XamlItemBindingOfItemsControlAttribute
XAML 属性。ItemsControl -derived タイプの一部の項目をバインドするために使用される、一部の BindingBase -derived タイプのプロパティを示します。このアノテーションにより、そのようなプロパティの XAML バインディングの DataContext 型解決が有効になります。
プロパティには、ItemsControl タイプのツリー祖先、または XamlItemsControlAttribute 属性でマークされたツリーが必要です。
XamlItemStyleOfItemsControlAttribute
XAML 属性。ItemsControl -derived タイプの項目のスタイルを設定するために使用される、一部の Style -derived タイプのプロパティを示します。このアノテーションにより、そのようなプロパティの XAML バインディングで DataContext 型解決が有効になります。
プロパティには、ItemsControl タイプのツリー祖先、または XamlItemsControlAttribute 属性でマークされたツリーが必要です。
XamlOneWayBindingModeByDefaultAttribute
XAML 属性。DependencyProperty にデフォルトで OneWay バインディングモードがあることを示します。
この属性は、DependencyProperty の CLR アクセサープロパティが存在する場合は適用する必要があり、存在しない場合は、DependencyProperty 記述子フィールドに適用する必要があります。
XamlTwoWayBindingModeByDefaultAttribute
XAML 属性。DependencyProperty にデフォルトで TwoWay バインディングモードがあることを示します。
この属性は、DependencyProperty の CLR アクセサープロパティが存在する場合は適用する必要があり、存在しない場合は、DependencyProperty 記述子フィールドに適用する必要があります。
TestSubjectAttribute
テストクラスまたはテストメソッドによってテストされる型を指定します。
この情報は、IDE がテストとテスト対象タイプ間を移動するために使用したり、テストランナーがサブジェクトごとにテストをグループ化し、より適切なテストレポートを提供したりするために使用できます。
メンバー
Subjectテスト対象の型を取得します。
#ctor(System.Type)指定されたテスト対象型を使用して、TestSubjectAttribute クラスの新しいインスタンスを初期化します。
テストされているタイプ。
MeansTestSubjectAttribute
ジェネリクス引数をテストクラスのテスト対象としてマークします。
基本テストクラスのジェネリクスパラメーターに適用して、引数として渡された型がテスト対象のクラスであることを示すことができます。この情報は、IDE がテストとテスト対象型間を移動するために使用したり、テストランナーがサブジェクトごとにテストをグループ化し、より適切なテストレポートを提供したりするために使用できます。
サンプル
ヘルパーの種類
ImplicitUseKindFlags
MeansImplicitUseAttribute または UsedImplicitlyAttribute でマークされている場合に、暗黙的に使用されるシンボルの詳細を指定します。
メンバー
Access属性とマークされたエンティティのみが使用されます。
Assignメンバーへの暗黙的な割り当てを示します。
InstantiatedWithFixedConstructorSignature固定コンストラクターシグネチャーを使用した型の暗黙的なインスタンス化を示します。つまり、未使用のコンストラクターパラメーターはそのように報告されません。
InstantiatedNoFixedConstructorSignature型の暗黙的なインスタンス化を示します。
ImplicitUseTargetFlags
MeansImplicitUseAttribute または UsedImplicitlyAttribute でマークされたときに暗黙的に使用されると見なされるものを指定します。
メンバー
Members属性でマークされたタイプのメンバーは使用されていると見なされます。
WithInheritors継承されたエンティティは使用されていると見なされます。
WithMembers属性でマークされたエンティティとそのすべてのメンバーが使用されていると見なされます。
SourceTemplateTargetExpression
展開点で式をキャプチャーする方法を定義するための SourceTemplateAttribute の値を提供します
メンバー
Inner内部表現を選択します
サンプル:
value > 42.{caret}が42をキャプチャーしますサンプル:
_args = args.{caret}がargsをキャプチャーしますOuter外部式を選択します
サンプル:
value > 42.{caret}がvalue > 42をキャプチャーしますサンプル:
_args = args.{caret}は割り当て全体をキャプチャーします
詳細は、ターゲット式を参照してください。
CollectionAccessType
コレクションメソッドの呼び出しがコレクションの内容にどのように影響するかを定義するための CollectionAccessAttribute の値を提供します。
メンバー
Noneメソッドはコレクションのコンテンツを使用または変更しません。
Readメソッドはコレクションの内容だけを読み込みますが、コレクションは変更しません。
ModifyExistingContentメソッドはコレクションの内容を変更できますが、新しい要素は追加しません。
UpdatedContentメソッドは、新しい要素をコレクションに追加できます。
AssertionConditionType
アサーションの型を指定します。アサーションメソッドの引数が条件を満たす場合、実行は続行されます。それ以外の場合は、実行が停止されたものとみなされます。
メンバー
IS_TRUEマークされたパラメーターは true に評価されるべきです。
IS_FALSEマークされたパラメーターは false に評価されるべきです。
IS_NULLマークされたパラメーターは NULL 値に評価される必要があります。
IS_NOT_NULLマークされたパラメーターは null 値でないと評価される必要があります。
InjectedLanguage
LanguageInjectionAttribute でマークされた文字列リテラル内に挿入されたコードフラグメントの言語。
関連ページ:
スマートモード
JetBrains Fleet は、軽量テキストエディターとしても、インテリジェントなコードエディターとしても機能します。システムリソースを最適化するため、リソースを大量に消費する機能は必要な場合にのみ有効になります。スマートモードを有効にすると、個々のファイルまたは複数のファイルを含むフォルダーをシームレスに操作できます。スマートモードを有効にする右上隅にあるスマートモードのステータスアイコンをクリックします。表示されるポップアップで、「有効にする」をクリックします。必要なインデックス作成と準...
C# ソースコードのアノテーション
JetBrains Fleet のコードアノテーションの利点を活用する最も簡単な方法は、ソースコードのシンボルにアノテーション属性を追加し、JetBrains Fleet がソリューションをより正確に分析できるようにすることです。デフォルトでは、すべてのアノテーション属性クラスは属性でマークされているため、コンパイラーはコード内の属性の使用を無視します。つまり、'JetBrains.Annotations.dll' アセンブリへのバイナリ参照は生成されません。ただし、プロジェクトで「JETBRA...
C# の値と null 可能性の分析
JetBrains Fleet は、値分析を実行して、可能性のある「null」逆参照、冗長なブール比較および null チェックを見つけるのに役立ちます。Null 許容値を分析するさまざまな方法:JetBrains Fleet は、いくつかの方法で値を分析できます。言語構成体の動作を理解します。以下の例では、パラメーターが null 可能性について明示的にチェックされたという事実に基づいて、JetBrains Fleet は、の値が確かに「null」である可能性があると合理的に想定し、対応する...
C# 文字列リテラルのコード分析
システム文字列のフォーマット方法:JetBrains Fleet は、、などのすべての .NET 文字列フォーマットメソッドの書式文字列と引数を分析します。文字列フォーマットメソッドの使用では、JetBrains Fleet は書式プレースホルダーをハイライトし、キャレットが次のいずれかにあるときに、対応する引数を持つプレースホルダーを同期的にハイライトします。引数と形式プレースホルダーが一致しない場合 (引数が欠落していると実行時にが発生します)、JetBrains Fleet は欠落または...
C# の契約のアノテーション
契約アノテーションでは、与えられた入力に対する期待される出力を定義することができます。言い換えれば、関数の参照型とブール型引数とその戻り値の間の依存関係を定義することができます。契約アノテーションのメカニズムにより、より簡単で安全な方法で消費できる API を作成できます。関数をで修飾することで、契約アノテーションを実装できます。ソースコードでそれを実行したい場合は、JetBrains.Annotations 名前空間を参照します。C# の外部アノテーションを使用して、既存のバイナリモジュールの...
C# でのコレクションアクセス分析
JetBrains Fleet は、コレクション項目の値を分析するだけでなく、使用する各コレクションも全体として分析します。このコレクションへの読み取りアクセスがある場合でも、コレクションが埋められたり変更されたりしない場合は、警告が表示されます。コレクションが決して読み込まれない場合すべての標準コレクションタイプは、デフォルトでこの方法で分析されます。必要に応じて、この分析をから派生するカスタムコレクションに適用することもできます。この場合、コレクションのパブリックメソッドの呼び出しがコレクシ...