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

时间:2015-06-22 07:41:24

标签: c# visual-studio-2013 codelens

在visual studio 2013中,特殊代码(方法,属性,字段......)的引用数量由代码镜头显示。 我想在visual studio中使用未使用的(零参考)代码。有没有办法得到它们?

我的意思是以下参考:

enter image description here

5 个答案:

答案 0 :(得分:135)

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

为此,我只创建了一个新的代码分析规则集文件(通过文件 - >新建>文件,确保左侧窗格中的常规是选择并向下滚动以查找代码分析规则集,为其指定文件名,然后搜索并选择以下规则)。请参阅下面的规则集文件的内容,您可以简单地将其复制并粘贴到一个扩展名为.ruleset的新文件中使用。

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

然后,您只需在项目/解决方案上运行代码分析(通过 Analyze->在解决方案上运行代码分析 -OR- Alt + F11 ),它将会回来作为警告,任何未引用的方法或它找到的未使用的成员。它甚至可以找到方法引用的方法,这些方法本身在其他地方没有引用。

但要小心,因为死代码的代码分析方法之一可能导致你错误,如果引用是隐藏的'只通过委托调用方法,当然还有反射。

检测死代码的规则具体如下:

  • 未从任何其他代码调用的私有方法(CA1811)
  • 未使用的局部变量(CA1804)
  • 未使用的私人字段(CA1823)
  • 未使用的参数(CA1801)
  • 未从任何其他代码(CA1812)实例化的内部类。
  • 按位OR限制开关(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 :(得分:5)

我将遍历每个文件,使用Ctrl-M-O命令折叠所有内容,然后四处滚动以查找参考0。

答案 2 :(得分:2)

这是一种手动方法,可以用来找到未标记为公共的未使用类。

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

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

答案 3 :(得分:0)

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

”不幸的是,[在Visual Studio Analysis中]您只能检测未使用的 私人成员。这是因为代码分析器假定为公共 成员可能会被其他程序使用。如果您是 通过网络服务将其发布为API或发布您的代码 作为图书馆。 ... ReSharper具有类似的代码分析功能– 检查未使用的公共成员的优势。”

答案 4 :(得分:0)

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