小编典典

获取 Visual Studio 中的零参考代码列表

all

在 Visual Studio 2013 中,特殊代码(方法、属性、字段、…)的引用数量由 Code Lens 显示。我想在 Visual
Studio中获得未使用的 (零参考)代码。 有没有办法得到它们?

我的意思是以下参考:

在此处输入图像描述


阅读 90

收藏
2022-07-27

共1个答案

小编典典

可能实现您所追求的最好和最简单的方法是使用带有 Visual Studio 的内置代码分析工具来查找并直接将您带到死代码和未使用的成员。

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

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

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

但是要小心,因为死代码的代码分析可能会导致您出错的一种方式是,如果仅通过委托调用该方法,当然还有反射,引用是否被“隐藏”。

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

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

以下是 .ruleset 文件的内容,您可以按照上述步骤获得,以方便您使用。您可以简单地复制以下 XML,将其粘贴到 notepad++ 中,使用扩展名
.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>
2022-07-27