Resharper 自定义模式变量

Posted

技术标签:

【中文标题】Resharper 自定义模式变量【英文标题】:Resharper custom pattern var 【发布时间】:2014-10-14 17:40:53 【问题描述】:

Resharper 的代码检查建议在 C# 中使用 var 而不是显式类型。 我不喜欢这个选项,因为太多的 var 会让事情变得不清楚,所以我禁用了这个选项。 但是,我喜欢使用 var 的地方是在初始化时使用相同类型的两倍符合泛型(因此在与 java 7 中的菱形运算符类似的情况下),例如:

Dictionary<string string> dic = new Dictionary<string, string>();
// I want a suggestion to replace this to
var dic = new Dictionary<string, string>();
// but I don't want to replace things like this:
Person p = new Person();

我在 Resharper 中制作了一个自定义模式:

Dictionary<$type1$, $type2$> $id$ = new Dictionary<$type1$, $type2$>();

替换为:

var $id$ = new Dictionary<$type1$, $type2$>();

这可以正常工作,但该模式还会找到已使用规则转换的行。为什么以及如何解决这个问题?

编辑:将部分文本加粗,因为似乎没有人阅读它。

【问题讨论】:

有趣。我认为这可能只是 Search with Pattern 功能的限制。 我认为他们自己的预制规则,如“尽可能使用 var 关键字”是用相同的语法制定的,所以我认为他们也必须解决这个问题。如果我能以他们的预制规则的来源为例。 我想创建一个规则,用“string x = string_expression”替换“var x = string_expression”,但这似乎不可能。 “var” 关键字已在某处硬编码 :( 他们绝对应该解决这个问题。 【参考方案1】:

Resharper 对“var”关键字进行了 2 次代码检查。转到Resharper->Options...->Code Inspection->Inspection Severity 并将“尽可能使用'var'关键字”更改为较低的严重性。 (注意,在检查严重性屏幕上,您可以在顶部的文本框中搜索单词)

【讨论】:

【参考方案2】:
    “锐化”菜单 “选项” “代码检查”,然后从“检查严重性”中,找到“尽可能使用 Var 关键字”并设置为“不显示”

【讨论】:

“我不喜欢这个选项,因为太多的 var 会让事情变得不清楚,所以我禁用了这个选项。”

以上是关于Resharper 自定义模式变量的主要内容,如果未能解决你的问题,请参考以下文章

犰狳的自定义 natvis 文件仅适用于 resharper

Resharper 自定义插件严重性选项

如何在 Resharper 中注册自定义 html 标签?

创建一个自定义属性,提示 Resharper 隐式使用该属性

如何自定义 Resharper 的“代码清理”以​​更改 C# 中的文档标题规则

自定义 Visual Studio [关闭]