11

How can I detect dead code in my C# application?

shahjapan
  • 13,637
  • 22
  • 74
  • 104
santosh singh
  • 27,666
  • 26
  • 83
  • 129

4 Answers4

9

ReSharper can handle that. You could also check out NDepend.

If you don't feel like paying for either of those, I believe you can analyze your project with FxCop and it will also identify dead code.

Justin Niessner
  • 242,243
  • 40
  • 408
  • 536
7

Compile your code and check the warnings in the Error List. The following code:

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

produces this warning:

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

Tools like JetBrains ReSharper (http://jetbrains.com/resharper)* can also perform this analysis on the fly and highlight dead code.

* ReSharper is a commercial tool.

James Kovacs
  • 11,549
  • 40
  • 44
  • You can set Visual Studio to treat warnings as errors. Project Properties... Build... Treat warnings as errors... Specific warnings: 0162. Then any dead code will result in a compiler error, which you can easily browse to. (I'm assuming that you consider VS free and/or C# Express supports this. I haven't checked.) I don't know of a free VS add-in that will highlight dead code. – James Kovacs Dec 03 '10 at 18:38
  • Visual Studio 2010 and the Microsoft C# compiler reliably highlight unreachable code within methods. They ignore unused private methods though. – Roman Starkov Jan 03 '12 at 13:50
2

Resharper identifies dead code and unused parameters/locals and so does FxCop.

Brian Rasmussen
  • 114,645
  • 34
  • 221
  • 317
0

Mind that these tools do not detect the dead code in the comments. For example, the following:

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

will not be detected as dead code.

As of July 2020, I could not find any code inspection tool that could detect dead code in the comments. Therefore I developed one on my own (based on Roslyn) and published it under MIT license: https://github.com/mristin/dead-csharp.

marko.ristin
  • 643
  • 8
  • 6