コードアノテーション属性
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 形式である必要があります。
サンプル
関連事項
メンバー
#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")
詳細は、INotifyPropertyChanged のサポートを参照してください。
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)
詳細は、契約アノテーションを参照してください。
LocalizationRequiredAttribute
マークされた要素をローカライズする必要があるかどうかを示します。
サンプル
詳細は、ローカライゼーションインスペクションとクイックフィックスを参照してください。
CannotApplyEqualityOperatorAttribute
マークされた型 (またはその派生型) の値は、==
演算子または !=
演算子を使用して比較できないため、代わりに Equals()
を使用する必要があることを示します。ただし、null
との比較に ==
または !=
を使用することは常に許可されます。
サンプル
詳細は、コード検査: 「CannotApplyEqualityOperatorAttribute」でマークされた型の値は、「Equals()」を使用して比較する必要がありますを参照してください。
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 属性でアノテーションが付けられたパラメーターに引数としてリソースを渡すことによって行われます。
メンバー
Value
false
に設定すると、リソースの破棄は必須ではありません。明示的な[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 を使用します。
Target
MacroAttribute がテンプレートメソッドに適用される場合、SourceTemplateAttribute のターゲットパラメーターを識別します。
詳細は、ソーステンプレートを参照してください。
CollectionAccessAttribute
コレクション型に対するメソッド、コンストラクターの呼び出し、プロパティへのアクセスがコレクションの内容にどのような影響を与えるかを示します。メソッドの戻り値に適用すると、返されたコレクションが呼び出し元専用に作成されるか (CollectionAccessType.UpdatedContent
)、外部から読み取り / 更新できるか (CollectionAccessType.Read
/CollectionAccessType.UpdatedContent
) が示されます。CollectionAccessType を使用してアクセスタイプを指定します。
この属性を使用すると、すべてのコレクションメソッドにこの属性が設定されている場合にのみ意味があります。
サンプル
詳細は、コレクションアクセス分析を参照してください。
AssertionMethodAttribute
マークされたメソッドがアサーションメソッドであることを示します。つまり、条件の 1 つが満たされると制御フローが停止します。条件を設定するには、パラメーターの 1 つを AssertionConditionAttribute 属性でマークします。
AssertionConditionAttribute
アサーションメソッドの条件パラメーターを示します。メソッド自体は AssertionMethodAttribute 属性でマークされる必要があります。属性の必須引数はアサーション型です。
TerminatesProgramAttribute
マークされたメソッドが制御フローの実行を無条件に終了することを示します。例: 無条件に例外をスローする可能性があります。
LinqTunnelAttribute
メソッドが列挙が延期された純粋な LINQ メソッドであることを示します ( Enumerable.Select
または Enumerable.Where
など)。このアノテーションを使用すると、LINQ メソッドチェーンを分析することによって、デリゲート型のパラメーターの [InstantHandle]
アノテーションを推論できます。
NoEnumerationAttribute
パラメーターとして渡された IEnumerable
が列挙されていないことを示します。このアノテーションを使用して、「IEnumerable の複数列挙の可能性」インスペクションを抑制します。
サンプル
RegexPatternAttribute
マークされたパラメーター、フィールド、プロパティが正規表現パターンであることを示します。
詳細は、正規表現の支援を参照してください。
LanguageInjectionAttribute
マークされたパラメーター、フィールド、プロパティが、指定された言語のコードフラグメントを含む文字列リテラルを受け入れることを示します。
サンプル
サンプル
メンバー
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 - 一重引用符で囲まれた文字列値。一致する完全なタイプ名を指定します (デフォルトでは空の文字列)
正確なタイプ - ブール値。式の型が完全に一致するかどうかを指定します (デフォルトでは 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」は、この属性が適用される、関連付けられた包含型およびメンバーの名前です。
詳細は、非推奨の 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 でマークされた文字列リテラル内に挿入されたコードフラグメントの言語。
詳細は、[LanguageInjectionAttribute] を使用するを参照してください。
関連ページ:
ソースコードのアノテーション
ReSharper のコードアノテーションの恩恵を受ける最も簡単な方法は、ソースコードのシンボルにアノテーション属性を追加し、ReSharper がソリューションをより正確かつ洞察力で分析できるようにすることです。デフォルトでは、すべてのアノテーション属性クラスは属性でマークされているため、コンパイラーはコード内の属性の使用を無視します。つまり、'JetBrains.Annotations.dll' アセンブリへのバイナリ参照は生成されません。ただし、プロジェクトで「JETBRAINS_ANNO...
価値と無効性の分析
ReSharper は、可能な「null」逆参照、重複ブール比較および null ・チェックを見つけるのに役立つ値分析を実行します。Null 許容値を分析するさまざまな方法:ReSharper は、いくつかの方法で値を分析できます。言語構成体の動作を理解します。次の例では、パラメーターが明示的に null 可能性をチェックされたという事実に基づいて、ReSharper はの値が実際に 'null' であると合理的に想定し、対応する警告を表示します。null 許容参照型が無効になっている場合、コ...
文字列リテラルのコード分析とヘルパー
プレーン文字列:コードにプレーンな文字列を使って作業しているときに ReSharper がどのように役立つかは次のとおりです。デフォルトでは、ReSharper は、すべての非逐語的な文字列の正しいおよび不正なエスケープシーケンスをハイライトします。キャレットが文字列内にあるときにを押し、対応するコンテキストアクションを選択することで、通常の文字列を逐語的な文字列に変換したり、元に戻したりできます。これは、補間された文字列でも機能します。Enter を押すだけで、文字列リテラルを分割できます。...
整数値の分析 (積分演算)
ReSharper は、コード内の整数値のフローを追跡し、冗長または場合によっては誤ったステートメントを報告できます。すべての C# 整数数値型 — 、、、、 — をサポートし、次の問題について警告します。常にまたはに評価される関係 / 等式演算子、値をチェックする到達不能なケース、による乗算やの加算など、意味のない算術演算(リテラルまたは定数を除く): ReSharper は、のような式が意図的なものであると想定しています)、オーバーフローの可能性、による除算の可能性、メソッドの呼び出しで発生する可能...
INotifyPropertyChanged のサポート
インターフェースは、.NET アプリケーションで、プロパティの値が変更されたときに通知を送信するために広く使用されています。ReSharper には、このインターフェースを実装するための一連の機能が用意されています。ReSharper は、以下のフレームワークのプロパティ変更通知を実装できます。MVVM ライト (WPF、Silverlight、Windows Phone、ユニバーサルアプリ)、Caliburn.Micro (WPF、Silverlight、Windows Phone、ユニバーサ...
契約アノテーション
契約アノテーションでは、与えられた入力に対する期待される出力を定義することができます。言い換えれば、関数の参照型とブール型引数とその戻り値の間の依存関係を定義することができます。契約アノテーションのメカニズムにより、より簡単で安全な方法で消費できる API を作成できます。を使って関数を装飾することによって契約アノテーションを実装することができます。あなたのソースコード、JetBrains.Annotations 名前空間を参照するでそれをやりたいなら。外部アノテーションを使用して既存のバイナリ...