Как стать автором
Обновить

Комментарии 8

Кстати, о юнит-тестировании.
Статический анализ мог бы находить мест в коде не покрытые тестами. Вы этим занимаетесь?
Прошу переформулировать вопрос, так как сейчас не знаю что ответить, кроме как «Естественно, да». :)
Ааа. Я понял. Я неправильно ответил. Я думал про «находить места с ошибками в коде».

Если имеется в виду поиск кода, непокрытого тестами — то нет.
Статическому анализатору скармливаются исходники программы и юнит-тестов, а он отвечяет — такая-то строка кода в процессе тестов не выполняется и к такому-то элементу статически инициализированного массива не обращаются.
Нет, такое мы не делаем.
В идеальном мире, где нет времени статический анализатор может дать такую картину.
Там где есть время, статический анализатор будет давать ложные покрытия кода.
Без запуска никак не обойтись, но тут тоже проблеммы есть. Так как приходится инструментировать код, то он «распухает» итоговый экзешник обычно становится на 120% больше (в зависимости от уровня покрытия кода). Это заметно увеличивает время исполнения этого кода и может получится так, что код без инструментализации выполняет определенную ветку кода, а с инструментализацией уже не успевает. Тут приходится много думать, как это исправить и возможно делить тест или стабировать больше исходного кода.
Но опять же статический анализатор тут не поможет ибо он не покажет как это будет работать на реальном железе в реальном времени.
Я бы даже сказал он будет тут вреден ибо он покажет, что все выполнится и все ок, а на самом деле это может оказаться далеко не так и как результат дорогостоящие переделки кода и аппаратного обеспечения.
Этим занимаются совершенно иные Инструментальные Средства, например Bullseye. Есть разные уровни покрытия кода и свои фичи связанные с тем, как в итоге исходный код транслируется в объектный. Статическим Анализом можно лишь предположить некоторое покрытие/не покрытие, но оно может быть далеко от реального покрытия.
Code Coverage — другая задача. Не умеем.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий