12

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

shahjapan
  • 11,781
  • 21
  • 66
  • 98
santosh singh
  • 25,036
  • 23
  • 75
  • 121

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
  • 229,755
  • 35
  • 391
  • 521
8

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,309
  • 35
  • 43
  • 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
  • 109,816
  • 33
  • 208
  • 305
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
  • 453
  • 4
  • 6