Інструменти покриття коду, такі як Емма, Кобертура та Конюшина, будуть інструментувати ваш код і записувати, які його частини викликаються, виконавши набір тестів. Це дуже корисно і має бути невід'ємною частиною вашого процесу розвитку. Це допоможе вам визначити, наскільки добре ваш тестовий набір покриває ваш код.
Однак це не те саме, що ідентифікувати реальний мертвий код. Він ідентифікує лише код, який охоплюється (або не охоплюється) тестами. Це може призвести до помилкових позитивних результатів (якщо ваші тести не охоплюють усіх сценаріїв), а також помилкових негативів (якщо ваш тест код доступу, який насправді ніколи не використовується в реальному сценарії).
Я думаю, що найкращим способом дійсно визначити мертвий код було б інструментувати свій код інструментом покриття у реальному середовищі та аналізувати охоплення коду протягом тривалого періоду часу.
Якщо ви працюєте в середовищі, збалансованому навантаженням (а якщо ні, то чому б і ні?), Я вважаю, що було б доцільно використовувати лише один екземпляр вашої програми та налаштувати балансир навантаження таким чином, щоб випадкова, але мала, частина ваші користувачі працюють за вашим інструментальним примірником. Якщо ви робите це протягом тривалого періоду часу (щоб переконатися, що ви охопили всі сценарії використання реального світу - такі сезонні зміни), ви повинні мати змогу точно бачити, до яких областей вашого коду можна отримати доступ у реальному світі та в яких частинах насправді ніколи не звертаються, а отже, і мертвий код.
Я ніколи особисто не бачив, щоб це було зроблено, і не знаю, як вищезазначені інструменти можуть використовуватися для інструментального аналізу та аналізу коду, на який не викликається тестовий набір - але я впевнений, що вони можуть бути.