コードアノテーション属性
JetBrains.Annotations フレームワークは、以下で説明する多くの属性を提供します。
これらの属性をコードで使用するには、 ソースコードのアノテーション セクションの説明に従って JetBrains.Annotations を参照する必要があります。
アノテーション属性
CanBeNullAttribute
マークされた要素の値が時々 null になる可能性があることを示し、その使用前に null のチェックが必要です。
サンプル
詳細については、 価値と無効性の分析 を参照してください。
NotNullAttribute
マークされた要素の値が決して null でないことを示します。
サンプル
詳細については、 価値と無効性の分析 を参照してください。
ItemNotNullAttribute
IEnumerable から派生した型のシンボルだけでなく、 Task および Lazy クラスのシンボルにも適用して、コレクション項目、 Task.Result プロパティ、または Lazy.Value プロパティの値が決して null にならないことを示すことができます。
サンプル
詳細については、 価値と無効性の分析 を参照してください。
ItemCanBeNullAttribute
IEnumerable から派生した型のシンボルだけでなく、 Task および Lazy クラスのシンボルにも適用して、コレクション項目、 Task.Result プロパティ、または Lazy.Value プロパティの値が null になれることを示すことができます。
サンプル
詳細については、 価値と無効性の分析 を参照してください。
StringFormatMethodAttribute
マークされたメソッドが形式パターンと (オプションの) 引数によって文字列を構築することを示します。 フォーマット文字列を受け入れるパラメーターはコンストラクターで指定する必要があります。 フォーマット文字列は System.String.Format(System.IFormatProvider,System.String,System.Object[])(英語)-like 形式である必要があります。
サンプル
関連事項
Members
#ctor(System.String)アノテーション付きメソッドのどのパラメーターをフォーマット文字列として扱うかを指定します。
詳細については、 カスタム文字列フォーマットメソッドの場合 を参照してください。
StructuredMessageTemplateAttribute
マークされたパラメーターがメッセージテンプレートであり、プレースホルダが次の引数に出現順に置き換えられることを示します。
サンプル
関連事項
詳細については、 文字列リテラルのコード分析とヘルパー を参照してください。
ValueProviderAttribute
このアノテーションを使用して、アノテーション付きプロパティ / フィールド / パラメーターの値を持つ静的フィールドまたは静的フィールドを含む型を指定します。 指定された型は補完候補を改善するために使用されます。
サンプル
ValueRangeAttribute
整数値が指定された区間に収まることを示します。 複数の交差しない間隔を指定することができます。 区間境界の値は区間に含まれます。
サンプル
NonNegativeValueAttribute
積分値がゼロを下回ることがないことを示します。
サンプル
詳細については、 整数値の分析 (積分演算) を参照してください。
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
メソッドの入力と出力間の依存関係を説明します。
構文
Function Definition Table 構文:
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)
詳細については、 契約アノテーション を参照してください。
LocalizationRequiredAttribute
マークされた要素をローカライズする必要があるかどうかを示します。
サンプル
CannotApplyEqualityOperatorAttribute
マークされた型 (またはその派生型) の値は、 == 演算子または != 演算子を使用して比較できないため、代わりに Equals() を使用する必要があることを示します。 ただし、 null との比較に == または != を使用することは常に許可されます。
サンプル
詳細については、 コードインスペクション:「CannotApplyEqualityOperatorAttribute」が付与された型の値は「Equals()」を使って比較してください。 を参照してください。
DefaultEqualityUsageAttribute
メソッドまたは型がアノテーション付き要素の等価メンバーを使用することを示します。
メソッドのジェネリックパラメーターに適用した場合、カスタムな等値比較演算子がこのメソッド呼び出し時に渡されない限り、アノテーションされた型の等値が使用されることを示します。 属性は、メソッドのパラメーターや戻り値の型に直接適用して、その等値使用を指定することもできます。 型のジェネリックパラメーターに適用した場合、その型のインスタンス化が等値の使用とみなされるため、型内のどこでも等値使用が発生する可能性があり、コンストラクターにカスタムな等値比較演算子が渡されない限り適用されます。
サンプル
詳細については、 コードインスペクション: デフォルト構造体等値の使用 を参照してください。
BaseTypeRequiredAttribute
ターゲット属性に適用される場合、ターゲット属性でマークされた型に対して、特定の型を実装または継承するための要件を指定します。
サンプル
UsedImplicitlyAttribute
マークされたシンボルが暗黙的に(リフレクション経由、外部ライブラリなどで)使用されていることを示し、このシンボルは使用状況検査インスペクションでは無視されます。
ImplicitUseKindFlagsおよび ImplicitUseTargetFlagsを使用して、この属性の適用方法を設定できます。
サンプル
MeansImplicitUseAttribute
属性、型パラメーター、 System.Type(英語) から割り当て可能な型のパラメーターに適用できます。 属性に適用すると、装飾された属性は UsedImplicitlyAttributeと同様に動作します。 型パラメーターまたは型 System.Type(英語) のパラメーターに適用される場合、対応する型が暗黙的に使用されることを示します。
PublicAPIAttribute
この属性は、削除すべきでない、未使用として報告すべきではない、公開されている API をマークすることを目的としています。
InstantHandleAttribute
呼び出されたメソッドがスタック上にあるときにパラメーターが完全に処理されたかどうかをコード分析エンジンに伝えます。 パラメーターがデリゲートの場合、デリゲートはメソッドの実行中にのみ呼び出すことができることを示します (デリゲートは 0 回または複数回呼び出すことができますが、フィールドに格納されず、後で、含まれているメソッドが実行スタック上に存在しなくなったときに呼び出すことができます))。 パラメーターが列挙可能な場合、メソッドの実行中にパラメーターが列挙されることを示します。 RequireAwait が true の場合、属性はメソッド呼び出しが await 式にある場合にのみ有効になります。
Members
RequireAwaitこの属性を有効にするには、
await式でメソッド呼び出しを使用する必要があります。asyncメソッドのデリゲート / 列挙可能パラメーターに使用できます。
PureAttribute
メソッドが監視可能な状態変更を行わないことを示します。 System.Diagnostics.Contracts.PureAttribute(英語) と同じ。
サンプル
MustUseReturnValueAttribute
メソッド呼び出しの戻り値を使用する必要があることを示します。
この属性で装飾されたメソッドは(純粋なメソッドとは異なり)状態を変更することがありますが、戻り値を使用しなければ意味がありません。
PureAttributeと同様に、この属性はメソッドの戻り値が使われていない場合の使用箇所検出に役立ちます。 警告表示時に使うメッセージを任意で指定できます(例:)。
。
MustDisposeResourceAttribute
リソースの破棄は使用箇所で処理する必要があり、リソースの所有権が呼び出し元に移ることを示します。 このアノテーションは、ディスポーザブル型またはそのコンストラクター単位で付与し、この型の新しいインスタンスが生成されるすべての文脈で IDE のリソース破棄コード解析を有効化できます。 ファクトリメソッドや out パラメーターにもアノテーションすることで、ディスポーザブル型の戻り値を処理する必要があることを示せます。
この属性で入力パラメーターをアノテーションしても意味がありません。
コンストラクターは型にこの属性が付与されていれば継承しますが、委譲先の基底コンストラクターからは継承しません(存在する場合)。
リソースの破棄は using (resource) ステートメント、 using var 宣言、明示的な Dispose() 呼び出し、または HandlesResourceDisposalAttribute属性でアノテーションされたパラメーターへの引数渡しで行われます。
Members
Valuefalseに設定すると、リソースの破棄は必須ではありません。 明示的な[MustDisposeResource(false)]アノテーションの主な使用例は、継承のアノテーションを緩和することです。
このアノテーションは dispose analysisおよび対応する インレイヒントをトリガーします。
HandlesResourceDisposalAttribute
メソッドまたはクラスインスタンスがリソースの所有権を取得し、使用後にそれを破棄することを示します。
out パラメーターのアノテーションにこの属性を用いても意味がありません。
インスタンスメソッドにこの属性がある場合、対応するリソースインスタンスの破棄処理をしていることを意味します。
フィールドやプロパティに付与した場合、この型がリソースを所有し、(自身の IDisposable 実装などで)適切に破棄処理を行うことを示します。
RequireStaticDelegateAttribute
このアノテーションは、パフォーマンス重視の API 向けに、デリゲートのアロケーションなしの利用パターンを徹底することを可能にします。 このアノテーションがデリゲート型パラメーターに適用されると、IDE はそのパラメーターの入力引数をチェックします。* ラムダ式や匿名メソッドが引数として渡された場合、渡されたクロージャが含むローカル変数をキャプチャしていないこと、かつコンパイラーがヒープアロケーションを回避するためにデリゲートインスタンスのキャッシングができることを IDE が検証します。 条件に合わなければ警告が生成されます。 * メソッド名やローカル関数名を引数として渡すと、必ずデリゲートインスタンスのヒープアロケーションが発生するため、IDE は警告を出します。
C# 9.0+ コードでは、IDE は、言語 / コンパイラーによって提供される同様の分析を利用するために、匿名関数に static 修飾子でアノテーションを付けることも提案します。
詳細については、 コードインスペクション: ラムダ式 / 匿名メソッドは含まれているコンテキストをキャプチャしてはいけません を参照してください。
ProvidesContextAttribute
その型の値を取得する他のすべての方法の代わりに使用する必要がある型のメンバーまたはパラメーターを示します。 このアノテーションは、「コンテキスト」値が評価されてどこかに保存されている場合、つまり、この値を取得する他のすべての方法を既存の方法と統合する必要がある場合に役立ちます。
サンプル
PathReferenceAttribute
パラメーターが Web プロジェクト内のファイルまたはフォルダーへのパスであることを示します。 パスは、Web ルート(〜)から始まる相対パスまたは絶対パスにすることができます。
SourceTemplateAttribute
この属性でマークされた拡張メソッドは、コード補完によって「ソーステンプレート」として処理されます。 拡張メソッドが何らかの式で完了すると、そのソースコードは呼び出しサイトでテンプレートのように自動的に展開されます。
テンプレートメソッドの本体には、有効なソースコードや「$」で始まる特別なコメントを含めることができます。 これらのコメント内のテキストは、テンプレートが適用されるときにソースコードとして追加されます。 テンプレートパラメーターは、追加のメソッドパラメーターとして、または 2 つの '$' 記号で囲まれた識別子として使用できます。 MacroAttribute属性を使用してパラメーター用のマクロを指定します。 展開に使用する式は ターゲットパラメーターで調整できます。
サンプル
この例では、 forEach メソッドはすべての列挙可能型の値で利用できるソーステンプレートであり、通常の C# foreach ステートメントを生成し、キャレットをブロック内に配置します:
Members
Target展開ポイントで複数の式が使用可能な場合、テンプレートの実行のためにキャプチャーする式を指定できます。 指定しない場合は、 内部とみなされます。
MacroAttribute
SourceTemplateAttribute のパラメーター用にマクロを指定できます。
この属性は、メソッド全体またはその追加パラメーターのいずれかに適用できます。 マクロ式は 式プロパティで定義されます。 メソッドに適用される場合、ターゲットテンプレートパラメーターは ターゲットプロパティで定義されます。 パラメーターにマクロをサイレント適用するには、 Editableプロパティの値を -1 に設定します。
サンプル
ソーステンプレートメソッドへの属性の適用:
テンプレートメソッドのパラメーターへの属性の適用:
Members
Expressionテンプレート展開時に SourceTemplateAttributeパラメーターに対して実行されるマクロを指定できます。
Editableテンプレートのデプロイ時に編集可能になるターゲットパラメーターの出現を指定できます。
テンプレートでターゲットパラメーターが複数回使われている場合、編集可能になるのは 1 箇所のみで、他の箇所は同期して変更されます。 編集可能箇所のゼロベースインデックスを指定するには、値に >= 0 を設定します。 テンプレート展開時にパラメーターを編集不可にするには、-1 を指定してください。
TargetMacroAttribute がテンプレートメソッドに適用されている場合、 SourceTemplateAttribute のターゲットパラメーターを識別します。
CollectionAccessAttribute
コレクション型に対するメソッド、コンストラクターの呼び出し、プロパティへのアクセスがコレクションの内容にどのような影響を与えるかを示します。 メソッドの戻り値に適用すると、返されたコレクションが呼び出し元専用に作成されるか (CollectionAccessType.UpdatedContent )、外部から読み取り / 更新できるか (CollectionAccessType.Read/CollectionAccessType.UpdatedContent) が示されます。 CollectionAccessTypeを使ってアクセスタイプを指定します。
この属性を使用すると、すべてのコレクションメソッドにこの属性が設定されている場合にのみ意味があります。
サンプル
詳細については、 コレクションアクセス分析 を参照してください。
AssertionMethodAttribute
マークされたメソッドがアサーションメソッド、つまりいずれかの条件が満たされた場合に制御フローを停止することを示します。 条件を設定するには、いずれかのパラメーターに AssertionConditionAttribute属性をマークします。
AssertionConditionAttribute
アサーションメソッドの条件パラメーターを示します。 メソッド自体は AssertionMethodAttribute属性でマークされる必要があります。 属性の必須引数はアサーション型です。
TerminatesProgramAttribute
マークされたメソッドが制御フローの実行を無条件に終了することを示します。 例: 無条件に例外をスローする可能性があります。
LinqTunnelAttribute
メソッドが列挙が延期された純粋な LINQ メソッドであることを示します (Enumerable.Select または Enumerable.Where など)。 このアノテーションを使用すると、LINQ メソッドチェーンを分析することによって、デリゲート型のパラメーターの [InstantHandle] アノテーションを推論できます。
NoEnumerationAttribute
パラメーターとして渡された IEnumerable が列挙されていないことを示します。 このアノテーションを使用して、「IEnumerable の複数列挙の可能性」インスペクションを抑制します。
サンプル
RegexPatternAttribute
マークされたパラメーター、フィールド、プロパティが正規表現パターンであることを示します。
詳細については、 正規表現の支援 を参照してください。
LanguageInjectionAttribute
マークされたパラメーター、フィールド、プロパティが、指定された言語のコードフラグメントを含む文字列リテラルを受け入れることを示します。
サンプル
サンプル
Members
InjectedLanguage挿入されたコードフラグメントの言語を指定します。
InjectedLanguageName挿入されたコードフラグメントの言語名を指定します。
Prefix挿入された文字列リテラルの「前」にある文字列を指定します。
Suffix挿入された文字列リテラルに「続く」文字列を指定します。
詳細については、 [LanguageInjectionAttribute] を使用する を参照してください。
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 - シングル引用符で囲まれた文字列値で、一致させる完全な型名を指定します(デフォルトは空文字列)
exactType - ブール値で、式が型を厳密に一致させる必要があるかどうかを指定します(デフォルトは false)
例:
$myExpr{Expression, 'Namespace.FooType', true}$-Namespace.FooTypeタイプの式と完全に一致する式プレースホルダーを定義します。$myExpr{Expression, 'Namespace.FooType'}$-Namespace.FooTypeタイプの式、または暗黙的にNamespace.FooTypeに変換できる式に一致する式プレースホルダーを定義します。$myExpr{Expression}$- 任意のタイプの式に一致する式プレースホルダーを定義します。$exprFoo{'Namespace.FooType', true}$-Namespace.FooTypeタイプの式と完全に一致する式プレースホルダーを定義します。
プレースホルダー引数を入力します。
type - シングル引用符で囲まれた文字列値で、一致させる完全な型名を指定します(デフォルトは空文字列)
exactType - ブール値で、式が型を厳密に一致させる必要があるかどうかを指定します(デフォルトは 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 - ブール値で、nameRegex が大文字小文字を区別するかどうかを指定します(デフォルトは true)
type - シングル引用符で囲まれた文字列値で、一致させる完全な型名を指定します(デフォルトは空文字列)
exactType - ブール値で、式が型を厳密に一致させる必要があるかどうかを指定します(デフォルトは 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メンバーに一致するメンバープレースホルダーを定義します。
Members
SearchTemplate構造的な検索パターン。
パターンにはテキスト部分が含まれており、ターゲット言語で許可されている識別子と、ターゲットコードブロックの可変部分と一致するプレースホルダーのみを含める必要があります。
Message検索パターンに一致するコードブロックが見つかったときに表示するメッセージ。
メッセージテキストの先頭に「エラー:」、「警告:」、「提案:」、または「ヒント:」の接頭辞を追加して、パターンの重大度を指定することもできます。 置換テンプレートを使用したコードパターンは、デフォルトで「提案」重大度を持ちます。 置換パターンが指定されていない場合、パターンの重大度は「警告」になります。
ReplaceTemplate一致したパターンを置換するために使用する置換パターン。
ReplaceMessageバルブに表示するメッセージを置き換えます。
FormatAfterReplaceコード置換後にコードフォーマットを適用します。
MatchSimilarConstructs類似のコードブロックを一致させる必要があるかどうか。
ShortenReferences名前空間のインポートディレクティブを自動的に挿入するか、テンプレートの適用後に冗長になる修飾子を削除します。
SuppressionKey抑制キーとして使用する文字列です。 デフォルトでは、次の抑制キーが使用されます:
CodeTemplate_SomeType_SomeMember。'SomeType' および 'SomeMember' は、この属性が適用されている型名およびメンバー名です。
詳細については、 非推奨の 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 文字列上のその他の機能に追加します。
Members
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 がテストとテスト対象型間を移動するために使用したり、テストランナーがサブジェクトごとにテストをグループ化し、より適切なテストレポートを提供したりするために使用できます。
Members
Subjectテスト対象の型を取得します。
#ctor(System.Type)指定されたテスト対象型を使って、 TestSubjectAttributeクラスの新しいインスタンスを初期化します。
テストされているタイプ。
詳細については、 テストとテストされたコード間を移動する を参照してください。
MeansTestSubjectAttribute
ジェネリクス引数をテストクラスのテスト対象としてマークします。
基本テストクラスのジェネリクスパラメーターに適用して、引数として渡された型がテスト対象のクラスであることを示すことができます。 この情報は、IDE がテストとテスト対象型間を移動するために使用したり、テストランナーがサブジェクトごとにテストをグループ化し、より適切なテストレポートを提供したりするために使用できます。
サンプル
詳細については、 テストとテストされたコード間を移動する を参照してください。
ヘルパーの種類
ImplicitUseKindFlags
MeansImplicitUseAttributeまたは UsedImplicitlyAttributeでマークされた場合に、暗黙的に使用されるシンボルの詳細を指定します。
Members
Access属性とマークされたエンティティのみが使用されます。
Assignメンバーへの暗黙的な割り当てを示します。
InstantiatedWithFixedConstructorSignature固定コンストラクターシグネチャーを使用した型の暗黙的なインスタンス化を示します。 つまり、未使用のコンストラクターパラメーターはそのように報告されません。
InstantiatedNoFixedConstructorSignature型の暗黙的なインスタンス化を示します。
ImplicitUseTargetFlags
MeansImplicitUseAttributeまたは UsedImplicitlyAttributeでマークされたときに暗黙的に使用されるものを指定します。
Members
Members属性でマークされたタイプのメンバーは使用されていると見なされます。
WithInheritors継承されたエンティティは使用されていると見なされます。
WithMembers属性でマークされたエンティティとそのすべてのメンバーが使用されていると見なされます。
SourceTemplateTargetExpression
展開箇所で式をキャプチャする方法を定義するための SourceTemplateAttributeの値を提供します
Members
Inner内部表現を選択します
サンプル:
value > 42.{caret}が42をキャプチャーしますサンプル:
_args = args.{caret}がargsをキャプチャーしますOuter外部式を選択します
サンプル:
value > 42.{caret}がvalue > 42をキャプチャーしますサンプル:
_args = args.{caret}は割り当て全体をキャプチャーします
詳細については、 ターゲット式 を参照してください。
CollectionAccessType
コレクションメソッドの呼び出しがコレクション内容にどのように影響するかを定義するための CollectionAccessAttributeの値を提供します。
Members
Noneメソッドはコレクションのコンテンツを使用または変更しません。
Readメソッドはコレクションの内容だけを読み込みますが、コレクションは変更しません。
ModifyExistingContentメソッドはコレクションの内容を変更できますが、新しい要素は追加しません。
UpdatedContentメソッドは、新しい要素をコレクションに追加できます。
AssertionConditionType
アサーションの型を指定します。 アサーションメソッドの引数が条件を満たす場合、実行は続行されます。 それ以外の場合は、実行が停止されたものとみなされます。
Members
IS_TRUEマークされたパラメーターは true に評価されるべきです。
IS_FALSEマークされたパラメーターは false に評価されるべきです。
IS_NULLマークされたパラメーターは NULL 値に評価される必要があります。
IS_NOT_NULLマークされたパラメーターは null 値でないと評価される必要があります。
InjectedLanguage
LanguageInjectionAttributeでマークされた文字列リテラル内に挿入されたコード箇所の言語。
詳細については、 [LanguageInjectionAttribute] を使用する を参照してください。