【问题标题】:Detect dead code in C#检测 C# 中的死代码
【发布时间】:2011-05-19 21:52:37
【问题描述】:

如何检测我的 C# 应用程序中的死代码?

【问题讨论】:

  • 你使用 Resharper 吗? )
  • 跟随气味。
  • @The_Smallest:我不会使用 Resharper
  • 到处都是异味……

标签: c# detection dead-code


【解决方案1】:

ReSharper 可以处理。您也可以查看NDepend

如果您不想为其中任何一个付费,我相信您可以使用 FxCop 分析您的项目,它还会识别死代码。

【讨论】:

    【解决方案2】:

    编译您的代码并检查错误列表中的警告。以下代码:

        public ActionResult Index() {
            ViewData["Message"] = "Welcome to ASP.NET MVC!";
            return View();
            return null;  // unreachable
        }
    

    产生此警告:

    Warning 11  Unreachable code detected   <fullpath>\HomeController.cs    13  13  <prjname>
    

    JetBrains ReSharper (http://jetbrains.com/resharper)* 等工具也可以即时执行此分析并突出显示死代码。

    * ReSharper 是一种商业工具。

    【讨论】:

    • 您可以将 Visual Studio 设置为将警告视为错误。项目属性...构建...将警告视为错误...具体警告:0162。然后任何死代码都会导致编译器错误,您可以轻松浏览到该错误。 (我假设您认为 VS 免费和/或 C# Express 支持这一点。我没有检查过。)我不知道有一个免费的 VS 插件会突出显示死代码。
    • Visual Studio 2010 和 Microsoft C# 编译器可靠地突出显示方法中无法访问的代码。不过,它们会忽略未使用的私有方法。
    【解决方案3】:

    Resharper 识别死代码和未使用的参数/本地,FxCop 也是如此。

    【讨论】:

      【解决方案4】:

      请注意,这些工具不会检测 cmets 中的死代码。 例如:

      // var a = 123;
      // DoSomething(a);
      

      不会被检测为死代码。

      截至 2020 年 7 月,我找不到任何可以检测 cmets 中死代码的代码检查工具。因此,我自己开发了一个(基于 Roslyn)并在 MIT 许可下发布: https://github.com/mristin/dead-csharp.

      【讨论】:

        猜你喜欢
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 2019-04-14
        • 2018-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多