ReSharper 2020.1ヘルプ

Clang形式の使用

バージョン2017.2以降、C++ファイル(およびJavaScriptとTypeScriptファイルの一部)では、ReSharperはクラン形式(英語)で定義されている書式スタイルをサポートしています。デフォルトでは、Clang-Format設定ファイルは、書式設定の設定のソースとして自動的に使用されます。

Clang-Formatとは何ですか?そしてReSharperはそれをどのようにサポートしていますか?

Clang-Formatは広く使われているC++コードフォーマッタです。それはYAMLフォーマットのファイル( .clang-format または _clang-format )でコードスタイルオプションを定義するオプションを提供するため、これらのファイルは多くの場合、すべてのコードスタイルルールを保持するプロジェクトの一部になります。Clang-Formatスタイルのオプションの全リストと設定ファイルの例を見るためには、Clangフォーマットのドキュメント(英語)を調べましょう。

プロジェクトのコードスタイルがClang-Formatファイルで設定されている場合、ReSharperのコードフォーマットエンジンは自動的にこれらのスタイルのほとんどを C++ファイルのフォーマットに使用し、一部はJavaScriptおよびTypeScriptファイルに使用します。

ソリューションのClang-Format

デフォルトでは、Clang-Formatプロパティは有効になっています。ReSharperとVisual StudioのオプションとEditorConfigスタイルで定義された設定を上書きします。ReSharperでコードフォーマットとコード構文のClang-Formatスタイルを無視するには、ReSharperオプションのコード編集 | 一般的なフォーマッタスタイルページで対応するチェックボックスをオフにします。

Clang-Formatサポートが有効になっていて、現在のファイルに影響を与える .clang-format または _clang-format ファイルがある場合、ReSharperはどのClang-Formatスタイルが適用され、どの設定がどこから来るのかを理解できます:

  • C++、JavaScript、およびTypeScriptのReSharperフォーマットオプションページでは、現在のファイルのClang-Formatスタイルによってページの少なくとも1つの設定が上書きされると黄色の警告が表示されます。オーバーライドされた各設定も黄色で強調表示されます。例:

    Code formatting options overridden by Clang-Format styles

  • ファイルフォーマット情報ウィンドウでは、現在のファイルに影響を与えるすべての .clang-format および _clang-format ファイルを表示および調査できます。

    ReSharper. File Formatting Info window

コードスタイル設定をClang形式にエクスポート

Clang-Formatを使用してコードスタイル設定を共有する場合は、ReSharperで既に構成されているスタイルを .clang-format ファイルにエクスポートすることができます。

  1. メインメニューからReSharper | オプションを選択するか、Alt+R,Oを押してから、左側のコード編集 | 一般的なフォーマッタスタイルを選択します。

  2. コードスタイルの設定ファイルセクションで、現在のスタイルを.clang-formatに書き込むをクリックします。これで.clang形式にエクスポートダイアログが開きます。

  3. デフォルトでは、ReSharperは現在のソリューションのルートディレクトリにある新しい .clang-format ファイルに設定を書き込みます。1つ以上の .clang-format ファイルが存在する場合、ReSharperは設定を保存するためにディレクトリ階層で最も近いファイルを使用します。必要に応じて、ダイアログの上部にあるパスセレクターを使用して宛先ファイルを変更できます。

  4. より詳細な設定については、追加オプションを表示を展開して以下のオプションを選択することができます。

    • デフォルト値を持つ設定をエクスポートする
      デフォルトでは、ReSharperは変更した設定のプロパティのみを保存します。結果の .editorconfig がReSharperまたはRiderによって読み取られると、これらの設定のみが適用され、他の設定を上書きします。他のすべての設定はIDEで指定された値を取ります。
      このオプションを有効にすると、ReSharperは変更されているかどうかにかかわらず、すべての設定を現在の状態で保存します。こうすればReSharperかRiderによって読まれるときすべてのコード様式そしてフォーマット設定を無効にするより厳密な .editorconfig を得るでしょう。

    • あいまいな値を持つ既存のプロパティを削除する
      EditorConfigプロパティの中には、複数のReSharper固有のプロパティに対応するものもあります。これにより、より正確な設定が可能になります。そのため、より一般的なプロパティが、関連するReSharper固有のプロパティと一致し、他のプロパティと矛盾する場合があります。これは、このより一般的なプロパティをあいまいにします。
      より詳細なプロパティが優先されるため、このような状況は問題にならず、あいまいな値を持つプロパティを削除する必要はありません。
      あいまいな値を持つプロパティを削除したい場合がある唯一のケースは、プロジェクトEditorConfigスタイルがReSharperおよびRiderによってのみ読み取られ、.editorconfig ファイルから冗長性を削除したい場合です。

    • 標準の.editorconfigプロパティをエクスポートする - 標準の.editorconfigプロパティ(英語)を保存するかどうかこれらのプロパティは、生成されたEditorConfigが他のエディターやIDEによって読み込まれる場合にも適用されます。

    • クロスエディターの言語固有のプロパティをエクスポートする - .NETコーディング規約のプロパティを保存するかどうか。これらのプロパティは、生成されたEditorConfigが他のエディターやIDEによって読み込まれる場合にも適用されます。

    • JetBrains Rider / ReSharper特有のコードスタイルプロパティをエクスポートする - 製品固有のコードフォーマットスタイルコード構文スタイルを保存するかどうか。

    • JetBrains Rider / ReSharper特有のインスペクション重大度をエクスポートする - ReSharperの構成可能コードインスペクションの重大度を保存するかどうか。

    • BasedOnStyle —対応するオプションを設定して、デフォルトですべてのオプションに使用されるスタイル(英語)を定義します。

    • 選択した基本スタイルと一致するオプションを非表示にする
      BasedOnStyleで選択されている基本スタイルで定義されている値と同じ値を持つオプションはエクスポートされません。

    • CPP設定のエクスポート — C++コードに影響するClang形式オプションをエクスポートするかどうか。

    • CPP設定のエクスポート — JavaScriptコードに影響するClang形式のオプションをエクスポートするかどうか。

  5. 指定した場所に既存の .clang-format ファイルがある場合、そこに存在するプロパティの値とReSharperが保存しようとしているプロパティの値との間に競合が発生する可能性があります。このようなプロパティは赤で表示され、保存を続行すると、新しく生成されたプロパティが優先されて競合が解決されます。

  6. エクスポートをクリックしてください。ReSharperは指定された場所に .clang-format ファイルを作成または更新します。

書式設定ルールのコンテキスト設定後に、書式設定スタイルをClang-Formatに保存することもできます。

サポートされているクラン形式オプション

オプション

言語でサポート

BasedOnStyleC++
AlignConsecutiveAssignmentsC++
AlignConsecutiveDeclarationsC++
AlignAfterOpenBracketC++
AlignOperandsC++
AlignTrailingCommentsC++
AllowShortCaseLabelsOnASingleLineC++
AlwaysBreakAfterDefinitionReturnTypeC++
AlwaysBreakAfterReturnTypeC++
AlwaysBreakTemplateDeclarationsC++
BinPackArgumentsC++
BinPackParametersC++

BreakBeforeBraces ( CustomLinuxのクラス定義を除く )

C++
BreakBeforeTernaryOperatorsC++
BreakConstructorInitializersBeforeCommaC++
ColumnLimit

C++ , JavaScript , TypeScript

ConstructorInitializerAllOnOneLineOrOnePerLineC++
IncludeBlocksC++
IncludeCategoriesC++
IncludeIsMainRegexC++
IndentCaseLabelsC++
IndentWidth

C++ , JavaScript , TypeScript

IndentWrappedFunctionNamesC++
MaxEmptyLinesToKeepC++
NamespaceIndentationC++
PointerAlignmentC++
SortIncludesC++
SpaceAfterCStyleCastC++
SpaceAfterTemplateKeywordC++
SpaceBeforeParensC++
SpacesInAnglesC++
SpacesInParenthesesC++
SpacesInSquareBracketsC++
TabWidth

C++ , JavaScript , TypeScript

UseTab

C++ , JavaScript , TypeScript

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

Language: C#Language: VB.NETLanguage: C++Language: HTMLLanguage: ASP.NETLanguage: RazorLanguage: JavaScriptLanguage: TypeScriptLanguage: CSSLanguage: XMLLanguage: XAMLLanguage: ResxLanguage: Build ScriptsLanguage: ProtobufLanguage: JSON
Feature is not availableFeature is not availableFeature is availableFeature is not availableFeature is not availableFeature is not availableFeature is availableFeature is availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not available
最終更新日: 2020年7月2日

関連ページ:

コードフォーマットルールの管理と適用

コードスタイルの重要な点は、コードの書式設定方法、つまり、空白と空白行を使用してコードブロックを配置および分離する方法、インデントにタブを使用するかどうか、および使用する方法。多数のReSharperコードフォーマットルールには、デフォルトのVisual Studioフォーマットオプションと多数のベ...

EditorConfigを使用する

どのフォーマットスタイルの設定がファイルフォーマット情報ウィンドウの現在のファイルに影響するかを見ることができます。ReSharperは、EditorConfig形式で定義されたコードフォーマットスタイル、コード構文スタイル、C#の命名スタイル、およびコードインスペクションの重大度レベルをサポートし...

ファイルフォーマット情報ウィンドウ

このウィンドウでは、現在開いているファイルの書式スタイル設定について説明します。字下げの原因とその価値、インデント設定の自動検出のステータス。現在のファイルに影響するEditorConfigサポートとすべての.editorconfigファイルのステータス。現在のファイルに影響するStyleCopサポ...

コードのフォーマットと再フォーマット

コードスタイルの重要な点は、コードの書式設定方法、つまり、空白と空白行を使用してコードブロックを配置および分離する方法、インデントにタブを使用するかどうか、および使用する方法。多数のReSharperコードフォーマットルールには、デフォルトのVisual Studioフォーマットオプションと多数のベ...

構文スタイル

コードスタイルの側面の1つは、互換性のある言語構文構造を使用する方法です。例:以下の2つのメソッド定義は、コンパイラの観点からは同じですが、構文構造の選択により、それらは異なって見えます。 [Conditional("DEBUG")] [Test] static public void Foo(St...

コード・インスペクション

ReSharperはサポートされているすべての言語で2500以上のインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルで設計時にコードの課題を検出して強調表示するため、および/または特定の範囲内ですべてのコードの課題を見つけるために使用されます。インスペクション Re...