ReSharper 2020.3 ヘルプ

言語インジェクション

文字列リテラル(および XML のような言語のタグまたは属性)に正規表現や HTML などの他の形式言語が含まれている場合、ReSharper はコードインスペクションクイックフィックスコード補完コンテキストアクション、この抜粋の中に、この言語に固有のその他の多くの機能があります。

ReSharper は、C#、JavaScript、TypeScript の文字列リテラル内で次の言語をサポートしています。

ReSharper は、自動と手動の 2 種類の言語インジェクションを処理できます。

たとえば、<script></script> タグ内の JavaScript や HTML の style 属性の CSS など、別の言語ファイルの言語抜粋を明確に検出できる場合があります。これらの場合、ReSharper は埋め込み言語を自動的に検出します。

必要に応じて、ReSharper オプションのコード編集 | 言語インジェクションページで、特定の場合に自動言語インジェクションを無効にすることができます。

文字列リテラル内の正式な言語が自動的に検出されない場合、次のいずれかの方法でリテラルに特定の言語を含むものとして手動でマークすることができます。

  • コンテキストアクションを使用します。実際には ReSharper に文字列に対応するシンボル範囲をマークし、この範囲を内部データベースに保存し、格納ファイルの変更に合わせて追跡します。この方法は非常に迅速かつ簡単ですが、VCS マージなどの外部ファイルの変更後に範囲が失われる可能性があり、このようにマークされたインジェクションはローカルでのみ追跡されます。

    ReSharper: Analyzing CSS code inside a C# string literal

  • JetBrains.Annotations[RegexPatternAttribute] を使用して、正規表現を受け入れるメソッドパラメーター、プロパティ、フィールドをマークします。これは正規表現に推奨される方法です。

  • 文字列リテラルの前にコメント /*language=javascript|html|regexp|jsregexp|json|css|xml*/ を置きます。確かに、これらのコメントには入力が必要であり、コードを汚染していると考えることもできます。ただし、コードを読み取るすべての人にインテンションが明確になり、コードが失われることはなく、ReSharper でコードを開いたユーザーはマークされた文字列で同じ機能を利用できます。
    ちなみに、コメントの形式は JetBrains Rider および IntelliJ プラットフォームベースの IDE(英語) と互換性があります。

    Language injections in C# strings with comments
    コメントに prefix=postfix= パラメーターを使用することもできます。例: 文字列に CSS プロパティのリストのみが含まれている場合、その前に //language=css prefix=body{ postfix=} というコメントを追加できます。これにより ReSharper は文字列を有効な CSS として解決します。

この機能は、次の言語とテクノロジーでサポートされています。

C# の機能の使用方法については、こちらの説明と例を参照してください。他言語の詳細については、言語による ReSharper の対応するトピックを参照してください。

関連ページ:

コードインスペクションでコードの問題を見つける

ReSharper の静的コード分析はコードインスペクションと呼ばれ、サポートされているすべての言語のコードに 2300 を超える個別のコードインスペクションを適用することによって実行されます。コードの問題はいくつかの方法で見つけることができます:ReSharper は、エディターで開かれたすべてのファイルについて、設計時に自動的にコードの問題を見つけてハイライトします。設計時コードインスペクションスコープは、ソリューション全体の分析を使用してソリューション全体に拡張できます。この場合、ソリュー...

コンテキストアクション

コンテキストアクションのいくつかの例を ReSharperWeb サイトでチェックすることができます。コンテキストアクションは、エディターで直接利用できるコード変換ヘルパーです。クイックフィックスとは対照的に、コンテキストアクションは問題の解決やコードの改善を目的としているためはなく、アクセス修飾子の変更、null をチェックするコードの生成、'foreach' の 'for' への変換などの小さな変更を素早く導入できます。コードベースのより大きな変換のために、ReSharper は数十の自動化さ...

正規表現のアシスタンス

ReSharper は、.NET の正規表現で作業するための豊富なツールセットを提供します。既存の式をすばやく分析し、エラーを見つけて修正できます。ReSharper は、新しい式を入力する際に、自動補完と検証を支援します。文字列リテラルの正規表現:デフォルトでは、ReSharper は、正規表現クラスのメソッドで、パラメーターの正規表現のみを処理します。ただし、正規表現を含む文字列は、文字列定数、フィールド、他のメソッドの引数など、さまざまな場所で定義できます。ReSharper で文字列を...

ASP.NETMVC 固有の機能

ReSharper には、一般的な ASP.NET 機能に加えて、ASP.NET MVC での作業をより簡単にサポートする特殊機能があります。構文のハイライト :ASP.NET MVC メソッド呼び出しとパラメーターの特別な構文のハイライト:コード補完 :文字列リテラルでアクションとコントローラーを

言語による ReSharper: MS ビルド

MSBuild は、アプリケーションを構築するために広く使用されているプラットフォームです。特定の XML タグを使用して、プロジェクトの構築方法や実行方法を定義できます。ReSharper を使用すると、より速く行うことができます。ReSharper オプション(Alt+R, O)のページの MSBuild と NAnt チェックボックスをオフにすることにより、ビルドスクリプトファイルの ReSharper 機能を無効にできます。コード検査:あらかじめ定義された要素またはその属性の名前を誤って入...

言語による ReSharper: Google プロトコルバッファ (プロトブフ)

ReSharper は、Google プロトコルバッファ(Protobuf)バージョン 2.x および 3.0 の .proto ファイルで IDE サポートを提供します。ReSharper オプション(Alt+R, O)のページのプロトブフチェックボックスをオフにすることにより、.proto ファイルの ReSharper 機能を無効にできます。ReSharper は、.proto ファイルの言語構文をハイライトし、エラーを検出してハイライトします。基本コード補完と他のタイピング支援機能はエディター...