В прошлом месяце была выпущена последняя версия статического анализатора кода от Program Verification Systems. Помимо C и C ++, PVS-Studio 6.00 обнаружит ошибки в вашем C # коде.
В прошлом месяце была выпущена последняя версия статического анализатора кода от Program Verification Systems. Помимо C и C ++, PVS-Studio 6.00 обнаружит ошибки в вашем C # коде.
В PVS-Studio есть более 250 диагностик для выявления ошибок. Более 40 из них в настоящее время предназначены для выполнения общего анализа кода C # в поисках типов ошибок, которые обычно возникают в коде, но которые трудно обнаружить.
После обнаружения ошибки в среде IDE Visual Studio вам будет предоставлено объяснение того, как ее исправить, а также примеры из проектов с открытым исходным кодом, в которых были обнаружены похожие проблемы. В этом коротком видео рассказывается, как его использовать:
В новой версии больше нет поддержки VS2005 и VS2008, и всем, кто еще использует ее, советуем придерживаться предыдущей версии, PVS-Studio, 5.31. Однако PVS-Studio также может запускаться отдельно от Visual Studio в автономном режиме.
Чтобы отметить включение PVS-Studio 6, его создатель Андрей Карпов, чья статья об обнаруженных им ошибках в первом компиляторе C ++ появилась на сайте I Programmer пару месяцев назад, провел анализ кода Roslyn, который использовался для добавления поддержки C #. к анализатору.
В своем блоге Карпов сообщает о 20 обнаруженных ошибках. Это первое:
В результате появится диагностическое сообщение PVS-Studio:
V3004 Оператор then эквивалентен оператору else.
Карпов пишет:
Это пример ошибок, обнаруженных в тестах. Они могут жить там годами, потому что не доставляют никаких хлопот. Просто тест не проверяет всего, для чего был предназначен. В обеих ветвях постоянно запускается поток 1, за которым следует поток 2.
Вот код, который он предлагает как то, что было задумано:
Другие ошибки классифицируются как опечатки, ошибки копирования и вставки, двойное обнаружение, неправильные или повторяющиеся условия и даже «невнимательность», и многие из них не вызовут слишком много проблем. Ошибка 16, однако, может вызвать хаос. Карпов знакомит с этим:
Держу пари, вы просто просмотрите приведенный ниже код и пропустите его навсегда. Это отличное доказательство того, что нам нужны эти неутомимые анализаторы кода.
Диагностическое сообщение в этом случае:
V3027 Переменная newType использовалась в логическом выражении до того, как она была проверена на соответствие нулю в том же логическом выражении, и чтобы показать, что делает этот код опасным, нам дается простой синтетический пример, основанный на нем:
if ((A! = null && A.x == B.y) || (B! = null && B.q == A.w))
Карпов комментирует:
Как видите, логика условия подразумевает, что A и B могут быть нулевыми ссылками. Выражение состоит из двух частей: в первой части проверяется ссылка A, а ссылка B — нет; во второй части проверяется ссылка B, а ссылка A — нет.
Этому коду может повезти, и он останется работоспособным, но он выглядит странно и опасно.
Если вы хотите опробовать его на собственном коде, вы можете получить доступ к бесплатной пробной версии PVS-Studio по адресу: http://www.viva64.com/en/pvs-studio-download/
Демо-версия ограничена 50 переходами по коду. Как только вы их израсходуете, инструмент предложит заполнить небольшую анкету, и, если вы согласитесь, вам будет предоставлено еще 50.
Больше информации
PVS-Studio
Сканирование Roslyn
Статьи по Теме
Поиск ошибок в первом компиляторе C ++ — что думает Бьярн!
Проверьте свои навыки статического анализа C ++
Чтобы получать информацию о новых статьях на I Programmer, подпишитесь на RSS-канал, подпишитесь на нас в Twitter, Facebook, Google+ или Linkedin или подпишитесь на нашу еженедельную новостную рассылку.
Комментарии
Оставьте комментарий или просмотрите существующие комментарии с помощью Disqus
или отправьте свой комментарий по адресу: comments@i-programmer.info