R#によって提案されたすべてのメソッド、プロパティなどの名前を変更する方法はありますか?Javaから変換したコードがあり、すべてのメソッドとプロパティはこの「onBeforeInsertExpression」のような形式であり、.NETで一般的なキャメルケースに従うようにします。
この質問はCodeRushにも当てはまります。
同じ機能が必要でしたが、見つかりませんでした。Apiを使用してReSharperにアドインを作成することを検討しましたが、代わりに通常のVisualStudioマクロを使用することにしました。このマクロは、現在のドキュメントのメソッドとプライベートフィールドの名前をデフォルトのReSharper設定に変更しますが、プロジェクトまたはソリューション内のすべてのファイルを反復処理するように簡単に変更できます。
このコードを.vbファイルとして保存し、VSマクロにインポートします。
輸入システム EnvDTEをインポートします EnvDTE80をインポートします EnvDTE90をインポートします EnvDTE90aをインポートします EnvDTE100をインポートします System.Diagnosticsをインポートします パブリックモジュールの名前変更 列挙型NamingStyle アッパーキャメルケース LowerCamelCase 列挙型の終了 Public Sub RenameMembers() 試す '開いているドキュメントのすべてのコード要素を反復処理します IterateCodeElements(ActiveDocument.ProjectItem.FileCodeModel.CodeElements) exAsSystem.Exceptionをキャッチします 終了試行 サブ終了 '提供された要素のすべてのコード要素を反復処理します Private Sub IterateCodeElements(ByVal colCodeElements As CodeElements) Dim objCodeElement As EnvDTE.CodeElement そうでない場合(colCodeElementsは何もありません) colCodeElementsの各objCodeElementに対して 試す Dim element As CodeElement2 = CType(objCodeElement、CodeElement2) element.Kind =vsCMElement.vsCMElementVariableThenの場合 RenameField(要素) ElseIf element.Kind = vsCMElement.vsCMElementFunction Then 'メソッドの名前を変更します ApplyNamingStyle(element、NamingStyle.UpperCamelCase) ElseIf TypeOf objCodeElement Is EnvDTE.CodeNamespace Then Dim objCodeNamespace = CType(objCodeElement、EnvDTE.CodeNamespace) IterateCodeElements(objCodeNamespace.Members) ElseIf TypeOf objCodeElement Is EnvDTE.CodeClass Then Dim objCodeClass = CType(objCodeElement、EnvDTE.CodeClass) IterateCodeElements(objCodeClass.Members) 終了する場合 キャッチ 終了試行 次 終了する場合 サブ終了 'コード仕様に従ってフィールドメンバーの名前を変更します Private Sub RenameField(ByRef element As CodeElement2) element.Kind =vsCMElement.vsCMElementVariableThenの場合 DimフィールドAsEnvDTE.CodeVariable= CType(element、EnvDTE.CodeVariable) If(field.Access = vsCMAccess.vsCMAccessPrivate)Then 'プライベート静的読み取り専用 If(field.IsShared AndAlso field.IsConstant)Then ApplyNamingStyle(element、NamingStyle.UpperCamelCase) ElseIf(field.IsSharedではない)Then 'プライベートフィールド(読み取り専用ですが静的ではありません) ApplyNamingStyle(element、NamingStyle.LowerCamelCase、 "_") そうしないと ApplyNamingStyle(element、NamingStyle.UpperCamelCase) 終了する場合 そうしないと '公開されている場合、最初の文字は大文字にする必要があります ToUpperCamelCase(要素) 終了する場合 'パブリックフィールドまたは保護フィールドの場合は、大文字で始めます 終了する場合 サブ終了 プライベート関数ApplyNamingStyle(ByRef要素As CodeElement2、ByValスタイルAs NamingStyle、オプションのByValプレフィックスAs String = ""、オプションのByValサフィックスAs String = "") Dim the_string As String = element.Name If(Not the_string Is Nothing AndAlso the_string.Length> 2)Then If(style = NamingStyle.LowerCamelCase)Then ToLowerCamelCase(the_string) ElseIf(style = NamingStyle.UpperCamelCase)Then ToUpperCamelCase(the_string) そうしないと 'ここにスタイルを追加します 終了する場合 終了する場合 AddPrefixOrSuffix(the_string、prefix、suffix) If(not element.Name.Equals(the_string))Then element.RenameSymbol(the_string) 終了する場合 終了機能 プライベート関数ToLowerCamelCase(ByRef the_string As String) the_string = the_string.Substring(0、1).ToLower()&the_string.Substring(1) 終了機能 プライベート関数AddPrefixOrSuffix(ByRef the_string As String、オプションのByValプレフィックスAs String = ""、オプションのByValサフィックスAs String = "") If(Not the_string.StartsWith(prefix))Then the_string=プレフィックス+the_string 終了する場合 If(Not the_string.EndsWith(suffix))Then the_string =the_string+サフィックス 終了する場合 終了機能 プライベート関数ToUpperCamelCase(ByRef the_string As String) the_string = the_string.Substring(0、1).ToUpper()&the_string.Substring(1) 終了機能 エンドモジュール
いいえ、残念ながら方法はありません。Resharperのコードクリーンアップ/コードの再フォーマットオプションは、フォーマット、名前空間などでうまく機能しますが、メンバーの自動名前変更は行いません。あなたは、各メンバーに対して「クイックフィックス」を行うのにちょっと立ち往生しています。あなたがそれらをたくさん持っているなら、これは苦痛かもしれません...
この種の修正に対するCodeRushのアプローチは、よりインタラクティブなプロセスです。
つまり、名前を変更したい変数の場所に物理的にいる必要があり、それぞれを個別に変更する必要があります。
とは言うものの、CodeRushにはDXCoreと呼ばれる非常に強力なエンジンがあり、これを使用して非常にさまざまな機能を作成できます。実際、CodeRushとRefactoPro全体が構築されているのはこのレイヤーです。
あなたが求めている機能を作成するためにそれが使用できることは間違いありません。ただし、既存の名前変更テクノロジを使用するかどうかは疑問です。これについてはもう少し詳しく調べる必要がありますが、何かを生み出すことができると楽観視しています。