Pull to refresh

Comments 27

Взяли Феррари (это я из скромности). По пустыне — не едет! В сугробе — застревает. А если кабриолет, то еще и с зонтом ехать надо, чтобы голову не намочить. Говно, а не машина!
Поясню чуть более подробно :-).

CppCat предназначен для тех, кто использует в своей работе Visual Studio. Если вы не используете эту среду, то CppCat не лучший выбор, скажем честно.

Так вот, если вы разрабатываете свой софт в Visual Studio, то вы просто устанавливаете продукт и все работает само.

Приведенное в статье описание ситуации по установке и запуску в виртуальной машине говорит о том, что Вы что-то делаете не так. Например, сообщение о том, что Visual Studio не найдено означает, что Вы не устанавливали эту среду. А как-то то ли скопировали ее, то ли еще что-то. Проблемы с компиляцией, упомянутые в статье, свидетельствуют об этом же.

В результате хорошая идея сравнения с CppCheck, которое можно только всячески приветствовать, вылилась в описание крайне некорректного запуска.
от чего же, вполне объективно всё описано.
UFO just landed and posted this here
Сообщение о не найденной Visual Studio обозначает что вы её установили, но ни разу не запускали. На этом много народу погорело: вроде как использовали продукт уже много раз, начали настраивать buildbot — а оно «в упор не видит» Visual Studio. Что делать? Обычно достаточно просто запустить Visual Studio хотя бы раз, хотя иногда это и не помогает.
Шаманство какое-то…
Причем тут шаманство? Microsoft же :)
Спасибо за статью!
Хочу остановиться на двух моментах.

1) Я уже писал к предыдущей статье комментарий, что Notepad++ не очень удачный проект для сравнений. Напомню:

Надо учитывать, что многие из ошибок, могли бы быть обнаружены в Notepad++ с помощью CppCat, если бы не PVS-Studio. Мы уже два раза проверяли этот проект:

И действительно, они вроде как исправлены. Это значит, что CppCat мог бы показать себя намного лучше.
С другой стороны, так как Notepad++ очень известный проект, он уже мог быть не раз проверен и анализатором Cppcheck. И тогда он тоже в нечестном проигрыше.

В общем, Notepad++ — неудачный полигон для сравнений.

2)
Надо сказать, что после того как Visual Studio 2010 был установлен, инсталлятор недолго думая выдал следующее

Вы Visual Studio 2010 через копирование что ли устанавливали?
1) Я действительно думал над тем, что лучше взять для сравнения — npp или что-то, что заранее дырявое и ранее ничем не проверялось (хорошим примером мог стать X86 старых версий, но как завести его под VS для меня лично загадка века). В итоге это заняло больше времени, чем планировалось, и так уж сложилось, что VS «не взлетела». Но всё равно акцент в статье сделан на обзор cppcheck и пример работы с данным инструментом, так как подобных статей ранее не было. Цель не в сравнении, кто лучше, а в том, чтобы стимулировать разработчиков пользоваться анализаторами. Далее, читатель при желании сам сможет проверить оба анализатора в действии.

2) Я скачал её с сайта Microsoft, ставил инсталлятором. И ожидал хотя бы сообщения, что у меня неправильная версия студии, могу дать информацию о баге, но это уже лучше в PM. Похоже, надо было с трекера качать:) Думаю, пользователь CodeBlocks столкнулся бы с теми же проблемами, если бы хотел просто «поиграться» с триалкой. 2010 ставил, чтобы не загружать объёмную 2013, а 2013 в свою очередь отказался грузить проект с npp из-за несовместимости версий.
Я не понимаю, почему Вы называете VS2013 объемной. Дистрибутивы 2010 и 2013 одинаковые. Может Вы express-версию пробовали?
Очень вероятно, что express. Я в них не сильно разбираюсь:) А есть разница?
Express версии не поддерживают расширения. И как следствие, работа CppCat/PVS-Studio невозможна.
Вот это поворот. Тогда понятно, в чём дело, но сообщение об ошибке могло бы быть более информативным. Попробую тогда найти нормальную версию, если получится натравить анализатор на ядро Linux Xorg — попробую сделать сравнение:) Это самый убитый OpenSource проект из которых мне довелось держать в руках. Можно специально взять старую версию 2005 года, когда никаких анализаторов ещё не было.
Лучше не надо. Если хочется извращений, возьмите PVS-Studio Stand Alone. Не издевайтесь над CppCat. :)
Так на странице CppCat написано, что Visual Studio Express не поддерживается. Вы что, не читали?
На cppcat.com фраза «Visual Studio Express is not supported» не находится даже поиском. Не все же разбираются в сортах Visual Studio.
UFO just landed and posted this here
Так инсталлятор явно писал, что поддерживаемые версии не найдены. Понятно, что улучшить сообщение стоит.
Пятница. В Хабре тишина и покой. Так что я думаю, никому не помешаю, если ещё пофилософствую. :)

В статье приводится ссылка на примеры ошибок, обнаруженных в различных проектах. Я хотел напомнить, что у нас тоже есть аналогичная база. И мы ей очень гордимся. Дело в том, что примеры выписываются вручную и редактируются, чтобы они были коротким и понятными. Это базу можно использовать для изучения типовых опечаток и выработки каких-то рекомендаций, разработке стандартов кодирования и т.д.

PVS-Studio насколько я понимаю всю замысловатость фразы «Please write us to get a price for PVS-Studio. Please specify interesting license type.» не предназначена для программистов-одиночек.

На самом деле, это была попытка работать с небольшими командами (история вопроса). А так да, для одиночных пользователей теперь есть CppCat.

Море переменных не инициализировано в конструкторе: (warning) Member variable %{VAR} is not initialized in the constructor. Это ошибку cppcheck считает предупреждением. Возможно, поведение такого кода зависит от компилятора, потому что npp каким-то чудом работает.

На самом деле, неинициализированные переменные в конструкторе, это очень даже часто не ошибки. Часто, это отложенная инициализация или оптимизация (не надо заполнять сразу все поля). А поведение компилятора тут ни причём. Если не читать неинициализированную переменную, то и беды не будет. Так что это конечно Warning, причём не очень сильный. Мы пока не хотим его делать в PVS-Studio/CppCat. Вреда от ложных срабатываний будет больше, чем пользы он найденных ошибок. Вот и вы пишите «море переменных не инициализировано». В этом море можно утонуть и не заметить настоящих бед. :)

(style) Unsigned variable 'i' can't be negative so it is unnecessary to test it. Довольно мелкая придирка:
for(unsigned int i = position_of_click; i >= 0; --i)

А вот тут не понятно. Какой же это «style». Это полновесная ошибка. И CppCat тоже должен был её тоже заметить. Беззнаковая переменная всегда будет >= 0. Мы такие ошибки любим.
Это базу можно использовать для изучения типовых опечаток и выработки каких-то рекомендаций, разработке стандартов кодирования и т.д.

Этим уже давно активно занимается CERT:
www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=637
Кстати, у них ещё есть база анализаторов с галочками, какие анализаторы какие ошибки умеют вылавливать. Интересное чтиво для разработчиков в целом и разработчиков инструментов анализа в частности.

А поведение компилятора тут ни причём. Если не читать неинициализированную переменную, то и беды не будет.

За такие дела, ЕМНИП, cppcheck влепит жирный error, трудно будет не заметить. В этом их философия — скрывать по умолчанию сообщения, в которых анализатор «не уверен».

for(unsigned int i = position_of_click; i >= 0; --i)

Моя неправда. Полноценный бесконечный цикл:)

P. S. Удивился, когда узнал, что Notepad++ собирается с полным арсеналом ворнингов. clang и gcc очень активно ругаются на несоответствие типов и неиспользуемые переменные.
UFO just landed and posted this here
Жалко, что cppcheck не сможет обработать исходники Qt программ, а только после обработки через moc, что усложняет анализ в разы.
В cppcheck недавно добавили поддержку библиотек, включая Qt, что теоретически даёт возможность анализа без препроцессинга. В следующей статье я как раз расскажу, как этим пользоваться. Я не уверен, что поддержка Qt там стопроцентная, но она есть.
CppCheck можно подключить к студии как внешний инструмент. Там есть флажок --template=vs как раз для форматирования вывода под студию. Работает с любой версией начиная с шестой.
Разработчики CppCat уже самостоятельно провели такое сравнение (с PVS-Studio), но с тех пор утекло много воды, а сравнение не очень объективно, так как PVS-Studio не предназначена для программистов-одиночек.

Обновлённое сравнение: habrahabr.ru/company/pvs-studio/blog/215469/
Sign up to leave a comment.

Articles