c# - 为什么 UnusedMember.Global 忽略某些公共/内部属性?
问题描述
众所周知,当 R# 发现没有直接使用的类型或成员时,它会将其变灰。当我们编写新类时,所有字段最初都是灰色的,这是正常的。那是由于UnusedMember.Global
规则。除了,它不适用于少数名字......
如果类型/成员具有来自某个已定义集合的名称,则此规则不会将其标记为无效,并以某种方式确定它已被实际使用,即使类中没有方法,并且类本身未在任何地方使用(但它仅适用于topublic
和internal
,private
按预期工作)。成员的类型似乎并不重要。大小写似乎也不重要。
我发现表现出这样的词是:Id
, Guid
, System
, Configuration
, Configurations
, Name
, Names
, Service
,以及所有仅指向类/结构的关键字,如果以其他方式而不是所有小写字母(so Services
,等)及其复数形式(这些可以是小写,所以)var
INT
Object
String
ints
所以让我们上这门课:
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版本
解决方案
看起来您已关闭“解决方案范围分析”(SWA)并且“在解决方案范围分析关闭时显示未使用的非私有类型成员”为“打开”(您可以在菜单 ReSharper -> 选项中打开/关闭这两个功能-> 代码检查 -> 设置)。当 SWA 在轻量级模式下对非私有工作进行使用分析时:它会查找包含类型成员名称作为文本的文件,如果文件不多,则查找实际使用情况。但是,如果有很多具有所需名称的文件,则它不会检查实际用法并将类型成员视为“已使用”。这种启发式方法会在 typememberы 上使用您提到的流行名称导致误报,但允许 ReSharper 的守护进程更快地工作。启用 SWA 使用分析更精确,不应包含任何误报
推荐阅读
- c# - How to make automated image slideshow using imagelist & timer in C#?
- android - 如何在 Glide with Animation 中加载图像
- c# - 在不同的进程中更改控件的背景色/前景色
- ruby - 在 String 类中使用 each_char 迭代后出现冻结错误。有什么修复吗?
- java - 你能告诉我如何模拟休息模板吗
- assembly - 如何从此站点读取 x86 指令表
- sql - SQL 需要很长时间才能更新表
- c# - 我应该在 Asp.Net Core MVC 项目中将常用实用程序方法放在哪里?
- firebase - 使用 Google gmail 身份验证的 React-Native App 访问 Firestore
- angular - 剑道日期选择器角度js