Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dead code identification (C++)

I have a large legacy C++ project compiled under Visual Studio 2008. I know there is a reasonably amount of 'dead' code that is not accessed anywhere -- methods that are not called, whole classes that are not used.

I'm looking for a tool that will identify this by static analysis.

This question: Dead code detection in legacy C/C++ project suggests using code coverage tools. This isn't an option as the test coverage just isn't high enough.

It also mentions a -Wunreachable-code. option to gcc. I'd like something similar for Visual Studio. We already use the linker's /OPT:REF option to remove redundant code, but this doesn't report the dead code at a useful level (when used with /VERBOSE there are over 100,000 lines, including a lot from libraries).

Are there any better options that work well with a Visual Studio project?

like image 869
Rob Walker Avatar asked Nov 26 '08 16:11

Rob Walker


People also ask

What is deactivated code in C?

This means that deactivated code is: executable code. software that will not be executed during runtime-operations of a certain software version / within a particular avionics box. software that may be executed in later versions or during special operations or only under certain circumstances.

What is considered dead code?

In some areas of computer programming, dead code is a section in the source code of a program which is executed but whose result is never used in any other computation. The execution of dead code wastes computation time and memory.

Should dead code be removed?

Removing such code has several benefits: it shrinks program size, an important consideration in some contexts, and it allows the running program to avoid executing irrelevant operations, which reduces its running time. It can also enable further optimizations by simplifying program structure.

How do I fix unreachable code in C++?

Just add a premature return while working on the code in the function or the code calling the function.


1 Answers

I know that Gimpel's Lint products (PC-Lint and Flexelint) will identify unreachable code and unused / unreferenced modules.

They both fall in the category of static analysis tools.

I have no affiliation w/ Gimpel, just a satisfied long-term customer.

like image 60
Dan Avatar answered Sep 21 '22 02:09

Dan