获取Visual Studio中的零引用代码列表

Visual Studio 2013中,特殊代码(方法、属性、字段等)的引用数量由代码镜头显示。 我想在Visual Studio中获取未使用的(零基准)代码。有没有办法得到他们?

我的意思是下面的参考:

enter image description here

126907 次浏览

要实现您所追求的目标,最好也是最简单的方法可能是使用VisualStudio的内置代码分析工具来查找并直接找到死代码和未使用的成员。

为此,我创建了一个新的代码分析规则集文件(通过文件->新建->文件,确保左窗格中的一般的被选中,并向下滚动以找到代码分析规则集,为其提供一个文件名,然后搜索并选择以下规则)。有关规则集文件的内容,请参阅下文,您可以将其复制并粘贴到扩展名为.ruleset的新文件中以供使用。

给定一个规则集文件,用户可以右键单击“解决方案资源管理器 ”面板中的项目文件,然后选择“属性 ”。在“项目属性”窗口中,单击左侧面板中的“代码分析 ”选项卡,然后单击“打开 ”以浏览到.ruleset文件的位置。如果转到解决方案文件(相对于项目文件)的属性,则可以在一个位置为解决方案中的每个项目设置代码分析文件(在代码分析设置下),并使用此处的下拉列表选择规则集文件。注意:您以前必须浏览到规则集文件才能使其显示在此“属性”窗口的下拉列表中。

然后,您只需对项目/解决方案运行代码分析(通过分析->对解决方案运行代码分析Alt+F11),它将以警告、任何未引用的方法或未使用的成员的形式返回。它甚至会找到被某个方法引用的方法,而该方法本身在其他地方没有引用。

但是,要小心,因为对死代码的代码分析可能会误导您,如果引用是“隐藏”的,则只能通过委托(当然还有反射)调用方法。

具体来说,检测死代码的规则是:

  • 不从任何其他代码调用的私有方法(CA1811)
  • 未使用的局部变量(CA1804)
  • 未使用的私有字段(CA1823)
  • 未使用的参数(CA1801)
  • 未从任何其他代码实例化的内部类(CA1812)。
  • 按位或限制开关中的死代码(C6259)

下面是.ruleset文件的内容,可以按照上面的步骤获得,以方便您使用。您可以简单地复制下面的XML,将其粘贴到记事本++中,以扩展名。ruleset保存到某个位置,浏览并按上述说明使用:

<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Dead Code Rules" Description=" " ToolsVersion="12.0">
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
<Rule Id="CA1801" Action="Warning" />
<Rule Id="CA1804" Action="Warning" />
<Rule Id="CA1811" Action="Warning" />
<Rule Id="CA1812" Action="Warning" />
<Rule Id="CA1823" Action="Warning" />
</Rules>
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
<Rule Id="C6259" Action="Warning" />
</Rules>
</RuleSet>

这里有一种手动方法来实现这一点,我用它来查找标记为公共的未使用的类。

  1. 搜索解决方案中一个项目的所有“公共类”并将其替换为“私有类”。可能还需要替换“公共静态类”和/或“公共抽象类”。
  2. 构建以查找所有错误
  3. 对于生成中的每个错误,请使用源代码管理还原引用类的文件。
  4. 对每个错误重复此操作,直到生成成功。
  5. 任何尚未恢复的剩余文件都可能被删除。
  6. (可选)重命名上述文件中的类,并再执行一次构建以查找错误。
  7. 最后一次搜索要删除的类的名称,以确认在反射或魔术字符串中没有使用它的任何实例。
  8. 删除已识别的未使用的类文件。
  9. 对要清理的每个解决方案项目重复上述步骤。

注意:如果您不遵循每个文件一个类的规则,这将需要更多的工作。此外,任何API服务端点都需要验证它没有被任何外部项目使用。

https://scottlilly.com/c-code-quality-improvement/remove-unused-classes-properties-and-functions/.

";遗憾的是,[在Visual Studio Analysis中]您只能检测未使用的 私人会员。这是因为代码分析器假定公共 成员可能被其他程序使用。这可能是真的,如果你 通过Web服务将它们发布为API或发布您的代码 作为一个图书馆。ReSharper具有类似的代码分析功能 检查未使用的公共成员的优点。

我会浏览每个文件,按Ctrl-M-O命令折叠所有内容,然后滚动查找引用0。

在Visual Studio|“错误列表”选项卡|“消息”选项卡中: 消息IDE0051私有成员“ xxxxxxxx ”未使用。

我能找到的最好的解决方案是ReSharper,然后您可以运行该工具的分析并查找“类型成员从未使用”。我知道这并不理想,但这是我能找到的最好的解决方案。