Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Resharper或CodeRush-全局重命名_Resharper_Coderush - Fatal编程技术网

Resharper或CodeRush-全局重命名

Resharper或CodeRush-全局重命名,resharper,coderush,Resharper,Coderush,有没有办法重命名R#建议的所有方法、属性等。我有从java转换的代码,所有方法和属性的格式都类似于“onBeforeInsertExpression”,我希望它们遵循.NET中常见的驼峰式大小写 这个问题也适用于CodeRush。不,不幸的是没有办法。Resharper的代码清理/重新格式化代码选项可以很好地用于格式化、名称空间等,但不会进行任何自动成员重命名。你被困在每个成员身上做“快速修复”。如果你有很多,这可能是一种痛苦…不,不幸的是没有办法。Resharper的代码清理/重新格式化代码选

有没有办法重命名R#建议的所有方法、属性等。我有从java转换的代码,所有方法和属性的格式都类似于“onBeforeInsertExpression”,我希望它们遵循.NET中常见的驼峰式大小写


这个问题也适用于CodeRush。

不,不幸的是没有办法。Resharper的代码清理/重新格式化代码选项可以很好地用于格式化、名称空间等,但不会进行任何自动成员重命名。你被困在每个成员身上做“快速修复”。如果你有很多,这可能是一种痛苦…

不,不幸的是没有办法。Resharper的代码清理/重新格式化代码选项可以很好地用于格式化、名称空间等,但不会进行任何自动成员重命名。你被困在每个成员身上做“快速修复”。如果你有很多这样的问题,这可能会很痛苦…

CodeRush解决这种问题的方法更像是一个互动的过程

也就是说,您必须实际位于要更改其名称的变量的位置,并且必须单独更改每个变量

这就是说,CodeRush下有一个非常强大的引擎,称为DXCore,可以用来创建非常广泛的功能。事实上,整个CodeRush和RefactoPro就是在这一层上构建的


我毫不怀疑,它可以用来创建您所追求的功能。但是,我怀疑您是否会使用现有的重命名技术。我将不得不进一步研究这一点,但我对能够产生一些东西持乐观态度。

CodeRush解决此类问题的方法更像是一个互动过程

也就是说,您必须实际位于要更改其名称的变量的位置,并且必须单独更改每个变量

这就是说,CodeRush下有一个非常强大的引擎,称为DXCore,可以用来创建非常广泛的功能。事实上,整个CodeRush和RefactoPro就是在这一层上构建的


我毫不怀疑,它可以用来创建您所追求的功能。但是,我怀疑您是否会使用现有的重命名技术。我将不得不进一步研究这个问题,但我对能够生产一些东西感到乐观。

我需要相同的功能,但找不到它。我考虑使用Api为ReSharper编写一个外接程序,但决定使用常规的Visual Studio宏。此宏将当前文档中的方法和私有字段重命名为默认的ReSharper设置,但可以轻松修改以遍历项目或解决方案中的所有文件。 将此代码另存为.vb文件,并将其导入VS宏

Imports System Imports EnvDTE Imports EnvDTE80 Imports EnvDTE90 Imports EnvDTE90a Imports EnvDTE100 Imports System.Diagnostics Public Module RenameMembers Enum NamingStyle UpperCamelCase LowerCamelCase End Enum Public Sub RenameMembers() Try 'Iterate through all code elements in the open document IterateCodeElements(ActiveDocument.ProjectItem.FileCodeModel.CodeElements) Catch ex As System.Exception End Try End Sub 'Iterate through all the code elements in the provided element Private Sub IterateCodeElements(ByVal colCodeElements As CodeElements) Dim objCodeElement As EnvDTE.CodeElement If Not (colCodeElements Is Nothing) Then For Each objCodeElement In colCodeElements Try Dim element As CodeElement2 = CType(objCodeElement, CodeElement2) If element.Kind = vsCMElement.vsCMElementVariable Then RenameField(element) ElseIf element.Kind = vsCMElement.vsCMElementFunction Then 'Rename the methods 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) End If Catch End Try Next End If End Sub 'Rename the field members according to our code specifications Private Sub RenameField(ByRef element As CodeElement2) If element.Kind = vsCMElement.vsCMElementVariable Then Dim field As EnvDTE.CodeVariable = CType(element, EnvDTE.CodeVariable) If (field.Access = vsCMAccess.vsCMAccessPrivate) Then 'private static readonly If (field.IsShared AndAlso field.IsConstant) Then ApplyNamingStyle(element, NamingStyle.UpperCamelCase) ElseIf (Not field.IsShared) Then 'private field (readonly but not static) ApplyNamingStyle(element, NamingStyle.LowerCamelCase, "_") Else ApplyNamingStyle(element, NamingStyle.UpperCamelCase) End If Else 'if is public, the first letter should be made uppercase ToUpperCamelCase(element) End If 'if public or protected field, start with uppercase End If End Sub Private Function ApplyNamingStyle(ByRef element As CodeElement2, ByVal style As NamingStyle, Optional ByVal prefix As String = "", Optional ByVal suffix 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) Else 'add additional styles here End If End If AddPrefixOrSuffix(the_string, prefix, suffix) If (Not element.Name.Equals(the_string)) Then element.RenameSymbol(the_string) End If End Function Private Function ToLowerCamelCase(ByRef the_string As String) the_string = the_string.Substring(0, 1).ToLower() & the_string.Substring(1) End Function Private Function AddPrefixOrSuffix(ByRef the_string As String, Optional ByVal prefix As String = "", Optional ByVal suffix As String = "") If (Not the_string.StartsWith(prefix)) Then the_string = prefix + the_string End If If (Not the_string.EndsWith(suffix)) Then the_string = the_string + suffix End If End Function Private Function ToUpperCamelCase(ByRef the_string As String) the_string = the_string.Substring(0, 1).ToUpper() & the_string.Substring(1) End Function End Module 导入系统 进口环境 进口环境80 进口EnvDTE90 进口EnvDTE90a 进口环境数据100 导入系统。诊断 公共模块重命名成员 枚举命名方式 大写 低熔点 结束枚举 公共子重命名成员() 尝试 '遍历打开文档中的所有代码元素 迭代元素(ActiveDocument.ProjectItem.FileCodeModel.CodeElements) 捕获ex作为系统异常 结束尝试 端接头 '遍历所提供元素中的所有代码元素 私有子迭代元素(ByVal colCodeElements作为CodeElements) 将objCodeElement设置为EnvDTE.CodeElement 如果不是(colCodeElements为Nothing),则 对于colCodeElements中的每个objCodeElement 尝试 作为CodeElement2=CType的Dim元素(objCodeElement,CodeElement2) 如果element.Kind=vsCMElement.vsCMElementVariable,则 重命名字段(元素) ElseIf element.Kind=vsCMElement.vsCMElementFunction然后 '重命名这些方法 ApplyNamegStyle(元素,NamingStyle.大写) ElseIf-TypeOfObjCodeElement为EnvDTE.CodeNamespace,则 Dim objCodeNamespace=CType(objCodeElement,EnvDTE.CodeNamespace) IterateCodeElements(objCodeNamespace.Members) 如果objCodeElement的类型为EnvDTE.CodeClass,则 Dim objCodeClass=CType(objCodeElement,EnvDTE.CodeClass) IterateCodeElements(objCodeClass.Members) 如果结束 抓住 结束尝试 下一个 如果结束 端接头 '根据我们的代码规范重命名字段成员 私有子重命名字段(ByRef元素作为CodeElement2) 如果element.Kind=vsCMElement.vsCMElementVariable,则 作为EnvDTE.CodeVariable=CType的Dim字段(元素,EnvDTE.CodeVariable) 如果(field.Access=vsCMAccess.vsCMAccessPrivate),则 '私有静态只读 如果(field.IsShared和also field.IsConstant),则 ApplyNamegStyle(元素,NamingStyle.大写) ElseIf(不是field.IsShared)那么 '专用字段(只读但非静态) ApplyNamegStyle(元素,NamingStyle.LowerCamelCase,“”) 其他的 ApplyNamegStyle(元素,NamingStyle.大写) 如果结束 其他的 “如果是公共的,第一个字母应该大写 Touppercase(元素) 如果结束 '如果是公共字段或受保护字段,请以大写字母开头 如果结束 端接头 私有函数ApplyNamingStyle(ByRef元素作为codelement2,ByVal样式作为NamingStyle,可选ByVal前缀作为String=”“,可选ByVal后缀作为String=”“) 将_字符串设置为string=element.Name 如果(不是字符串为Nothing,也是字符串长度>2),则 如果(麦粒肿)