Вы имеете в виду покрытие кода из модульных тестов или устаревшего кода? Как правило, я думаю, что только тестируемый код, имеющий сбой, должен быть покрыт модульным тестом (да, я понимаю, что это может быть начало священной войны, но именно там я и стою). Так что это будет довольно низкий процент.
Теперь устаревший код с другой стороны - это отдельная история. Устаревший код - это код, который не используется. Скорее всего, вам не нужен инструмент, чтобы сказать вам это для большей части вашего кода, просто ищите маленькие синие точки после компиляции в Delphi. Все без синей точки устарело. Обычно, если код не используется, его следует удалить. Так что это будет 100% покрытие кода.
Существуют другие сценарии для устаревшего кода, например, если у вас есть специальный код для обработки, если дата когда-либо появится 31 февраля. Компилятор не знает, что это не может произойти, поэтому он компилирует его и выделяет синюю точку. Теперь вы можете написать для этого модульный тест, протестировать его, и он может сработать, но тогда вы просто напрасно тратите свое время второй раз (сначала на написание кода, затем на тестирование).
Существуют инструменты для отслеживания того, какие пути кода используются при запуске программы, но это только сим-надежно, так как не все пути кода будут использоваться каждый раз. Как и тот специальный код, который вы должны обрабатывать високосный год, он будет запускаться только каждые четыре года. Так что если вы уберете его, ваша программа будет нарушаться каждые четыре года.
Полагаю, я действительно не ответил на ваш вопрос о DUnit и Code Coverage, но, думаю, я оставил вам больше вопросов, чем вы начали. Какой вид покрытия кода вы ищете?
ОБНОВЛЕНИЕ: Если вы используете подход TDD, то никакой код не будет написан, пока вы не напишите для него тест, поэтому по своей природе у вас есть 100 тестовых покрытий. Конечно, только то, что каждый метод выполняется с помощью теста, не означает, что применяется весь диапазон его поведения. SmartInspect предоставляет действительно простой метод для определения, какие методы вызываются вместе с синхронизацией и т. Д. Он немного меньше, чем AQTime, но не бесплатный. Еще немного поработав с вашей стороны, вы можете добавить инструментарий для измерения каждого пути кода (ветви операторов if и т. Д.). Конечно, вы можете просто добавить свою собственную регистрацию в ваши методы, чтобы получить отчет о покрытии, и это бесплатно (хорошо, ожидайте своего времени, которое, вероятно, стоит больше чем инструменты). Если вы используете JEDI Debug, вы также можете получить стек вызовов.
TDD действительно нельзя легко применить задним числом к существующему коду без большого количества рефакторинга. Хотя более новые интегрированные среды разработки Delphi имеют возможность создавать заглушки для модульных тестов для каждого открытого метода, что дает вам 100% охват ваших открытых методов. То, что вы вставите в эти заглушки, определяет, насколько эффективно это покрытие.