Не все статические анализаторы одинаково полезны

В первой части доклада речь пойдет о популярных инструментах, ищущих нарушения Guidelines, ошибки copy-paste и опечатки в исходном коде. Обсудим результаты работы этих инструментов на наборе opensource проектов, поговорим о результатах их сравнения, а также об используемой при сравнении методике.

Во второй части поговорим о более сложных ошибках, таких как возникновение NullReferenceException или утечки ресурсов, и способах их обнаружения. Обычно при поиске таких ошибок ограничиваются юнит-тестами и интеграционным тестированием. Однако в некоторых ситуациях, даже несмотря на 100% покрытие кода при тестировании, в нем присутствуют ошибки. Помочь обнаружить такие ошибки может как чисто статический анализ, например, Coverity Prevent, так и статико-динамический, такой как IntelliTest(Pex). Обсудим сходства и различия этих анализов и почему они не взаимозаменяют, а дополняют друг друга, а также их продакшн использование.


Владимир Кошелев

ИСП РАН

Эксперт в области статического анализа и компиляторных технологий. Последние годы занимаюсь разработкой статических анализаторов для C/C++/Java/C#. В настоящее время разрабатываю статический анализатор на основе Roslyn – SharpChecker.