为什么 UnusedMember.Global 忽略某些 public/internal 属性?
Why is UnusedMember.Global ignoring certain public/internal properties?
正如我们所知,当R#发现不直接使用的类型或成员时,它会将其显示为灰色。当我们写 new class 时,所有字段最初都是灰色的,这是正常的。这是由于 UnusedMember.Global
规则。除了,它不适用于少数名字...
如果 type/member 的名称来自某个已定义的集合,则此规则不会将其标记为无效,并以某种方式决定它实际被使用,即使 class 中没有方法,并且class 本身没有在任何地方使用(但它只适用于 public
和 internal
,private
按预期工作)。成员的类型似乎并不重要。大小写似乎也不重要。
我发现这样的词是:Id
、Guid
、System
、Configuration
、Configurations
、Name
, Names
, Service
, Services
, var
和所有指向 class/struct 的关键字,如果不是全部小写(所以 INT
、Object
、String
等)及其复数形式(这些可以是小写的,所以 ints
)
所以让我们来看看这个 class:
internal class ConfiguredService // Grayed out
{
internal string RemoteSystem { get; } // Grayed out
internal string LocalSystem { get; } // Grayed out
internal string Configuration { get; } // Not grayed
internal string ints { get; } // Not grayed
}
在我看来它不像是一个错误,它会在几年前被捕获,因为它非常明显且难以重现。但是我找不到任何来源可以解释为什么它是这样设计的,也无法列出采取这种行为的词。
我的Visual Studio版本是Professional 2017 15.8.5,R#是2018.1.2版本
看起来您 "solution wide analysis" (SWA) 已关闭并且 "show unused non-private type members when solution-wide analysis is off" 为 "on"(您可以在菜单 ReSharper -> 选项 -> 中打开 on/off 这两个功能代码检查 -> 设置)。
当 SWA 关闭时,非私有使用分析在轻量级模式下工作:它查找包含类型成员名称作为文本的文件,如果文件不多,则查找实际使用情况。但是,如果有很多具有所需名称的文件,则它不会检查实际用法并将类型成员视为 "used"。这种启发式方法会导致 typememberы 上出现您提到的流行名称的误报,但允许 ReSharper 的守护进程运行得更快。启用 SWA 使用分析更加精确,不应包含任何漏报
正如我们所知,当R#发现不直接使用的类型或成员时,它会将其显示为灰色。当我们写 new class 时,所有字段最初都是灰色的,这是正常的。这是由于 UnusedMember.Global
规则。除了,它不适用于少数名字...
如果 type/member 的名称来自某个已定义的集合,则此规则不会将其标记为无效,并以某种方式决定它实际被使用,即使 class 中没有方法,并且class 本身没有在任何地方使用(但它只适用于 public
和 internal
,private
按预期工作)。成员的类型似乎并不重要。大小写似乎也不重要。
我发现这样的词是:Id
、Guid
、System
、Configuration
、Configurations
、Name
, Names
, Service
, Services
, var
和所有指向 class/struct 的关键字,如果不是全部小写(所以 INT
、Object
、String
等)及其复数形式(这些可以是小写的,所以 ints
)
所以让我们来看看这个 class:
internal class ConfiguredService // Grayed out
{
internal string RemoteSystem { get; } // Grayed out
internal string LocalSystem { get; } // Grayed out
internal string Configuration { get; } // Not grayed
internal string ints { get; } // Not grayed
}
在我看来它不像是一个错误,它会在几年前被捕获,因为它非常明显且难以重现。但是我找不到任何来源可以解释为什么它是这样设计的,也无法列出采取这种行为的词。
我的Visual Studio版本是Professional 2017 15.8.5,R#是2018.1.2版本
看起来您 "solution wide analysis" (SWA) 已关闭并且 "show unused non-private type members when solution-wide analysis is off" 为 "on"(您可以在菜单 ReSharper -> 选项 -> 中打开 on/off 这两个功能代码检查 -> 设置)。 当 SWA 关闭时,非私有使用分析在轻量级模式下工作:它查找包含类型成员名称作为文本的文件,如果文件不多,则查找实际使用情况。但是,如果有很多具有所需名称的文件,则它不会检查实际用法并将类型成员视为 "used"。这种启发式方法会导致 typememberы 上出现您提到的流行名称的误报,但允许 ReSharper 的守护进程运行得更快。启用 SWA 使用分析更加精确,不应包含任何漏报