Comments 27
Взяли Феррари (это я из скромности). По пустыне — не едет! В сугробе — застревает. А если кабриолет, то еще и с зонтом ехать надо, чтобы голову не намочить. Говно, а не машина!
-41
Поясню чуть более подробно :-).
CppCat предназначен для тех, кто использует в своей работе Visual Studio. Если вы не используете эту среду, то CppCat не лучший выбор, скажем честно.
Так вот, если вы разрабатываете свой софт в Visual Studio, то вы просто устанавливаете продукт и все работает само.
Приведенное в статье описание ситуации по установке и запуску в виртуальной машине говорит о том, что Вы что-то делаете не так. Например, сообщение о том, что Visual Studio не найдено означает, что Вы не устанавливали эту среду. А как-то то ли скопировали ее, то ли еще что-то. Проблемы с компиляцией, упомянутые в статье, свидетельствуют об этом же.
В результате хорошая идея сравнения с CppCheck, которое можно только всячески приветствовать, вылилась в описание крайне некорректного запуска.
CppCat предназначен для тех, кто использует в своей работе Visual Studio. Если вы не используете эту среду, то CppCat не лучший выбор, скажем честно.
Так вот, если вы разрабатываете свой софт в Visual Studio, то вы просто устанавливаете продукт и все работает само.
Приведенное в статье описание ситуации по установке и запуску в виртуальной машине говорит о том, что Вы что-то делаете не так. Например, сообщение о том, что Visual Studio не найдено означает, что Вы не устанавливали эту среду. А как-то то ли скопировали ее, то ли еще что-то. Проблемы с компиляцией, упомянутые в статье, свидетельствуют об этом же.
В результате хорошая идея сравнения с CppCheck, которое можно только всячески приветствовать, вылилась в описание крайне некорректного запуска.
-20
от чего же, вполне объективно всё описано.
+5
UFO just landed and posted this here
Сообщение о не найденной Visual Studio обозначает что вы её установили, но ни разу не запускали. На этом много народу погорело: вроде как использовали продукт уже много раз, начали настраивать buildbot — а оно «в упор не видит» Visual Studio. Что делать? Обычно достаточно просто запустить Visual Studio хотя бы раз, хотя иногда это и не помогает.
+4
Спасибо за статью!
Хочу остановиться на двух моментах.
1) Я уже писал к предыдущей статье комментарий, что Notepad++ не очень удачный проект для сравнений. Напомню:
Надо учитывать, что многие из ошибок, могли бы быть обнаружены в Notepad++ с помощью CppCat, если бы не PVS-Studio. Мы уже два раза проверяли этот проект:
И действительно, они вроде как исправлены. Это значит, что CppCat мог бы показать себя намного лучше.
С другой стороны, так как Notepad++ очень известный проект, он уже мог быть не раз проверен и анализатором Cppcheck. И тогда он тоже в нечестном проигрыше.
В общем, Notepad++ — неудачный полигон для сравнений.
2)
Вы Visual Studio 2010 через копирование что ли устанавливали?
Хочу остановиться на двух моментах.
1) Я уже писал к предыдущей статье комментарий, что Notepad++ не очень удачный проект для сравнений. Напомню:
Надо учитывать, что многие из ошибок, могли бы быть обнаружены в Notepad++ с помощью CppCat, если бы не PVS-Studio. Мы уже два раза проверяли этот проект:
И действительно, они вроде как исправлены. Это значит, что CppCat мог бы показать себя намного лучше.
С другой стороны, так как Notepad++ очень известный проект, он уже мог быть не раз проверен и анализатором Cppcheck. И тогда он тоже в нечестном проигрыше.
В общем, Notepad++ — неудачный полигон для сравнений.
2)
Надо сказать, что после того как Visual Studio 2010 был установлен, инсталлятор недолго думая выдал следующее
Вы Visual Studio 2010 через копирование что ли устанавливали?
+4
1) Я действительно думал над тем, что лучше взять для сравнения — npp или что-то, что заранее дырявое и ранее ничем не проверялось (хорошим примером мог стать X86 старых версий, но как завести его под VS для меня лично загадка века). В итоге это заняло больше времени, чем планировалось, и так уж сложилось, что VS «не взлетела». Но всё равно акцент в статье сделан на обзор cppcheck и пример работы с данным инструментом, так как подобных статей ранее не было. Цель не в сравнении, кто лучше, а в том, чтобы стимулировать разработчиков пользоваться анализаторами. Далее, читатель при желании сам сможет проверить оба анализатора в действии.
2) Я скачал её с сайта Microsoft, ставил инсталлятором. И ожидал хотя бы сообщения, что у меня неправильная версия студии, могу дать информацию о баге, но это уже лучше в PM. Похоже, надо было с трекера качать:) Думаю, пользователь CodeBlocks столкнулся бы с теми же проблемами, если бы хотел просто «поиграться» с триалкой. 2010 ставил, чтобы не загружать объёмную 2013, а 2013 в свою очередь отказался грузить проект с npp из-за несовместимости версий.
2) Я скачал её с сайта Microsoft, ставил инсталлятором. И ожидал хотя бы сообщения, что у меня неправильная версия студии, могу дать информацию о баге, но это уже лучше в PM. Похоже, надо было с трекера качать:) Думаю, пользователь CodeBlocks столкнулся бы с теми же проблемами, если бы хотел просто «поиграться» с триалкой. 2010 ставил, чтобы не загружать объёмную 2013, а 2013 в свою очередь отказался грузить проект с npp из-за несовместимости версий.
+5
Я не понимаю, почему Вы называете VS2013 объемной. Дистрибутивы 2010 и 2013 одинаковые. Может Вы express-версию пробовали?
+2
Очень вероятно, что express. Я в них не сильно разбираюсь:) А есть разница?
+1
Express версии не поддерживают расширения. И как следствие, работа CppCat/PVS-Studio невозможна.
0
Вот это поворот. Тогда понятно, в чём дело, но сообщение об ошибке могло бы быть более информативным. Попробую тогда найти нормальную версию, если получится натравить анализатор на ядро Linux Xorg — попробую сделать сравнение:) Это самый убитый OpenSource проект из которых мне довелось держать в руках. Можно специально взять старую версию 2005 года, когда никаких анализаторов ещё не было.
+6
Лучше не надо. Если хочется извращений, возьмите PVS-Studio Stand Alone. Не издевайтесь над CppCat. :)
-2
Так на странице CppCat написано, что Visual Studio Express не поддерживается. Вы что, не читали?
0
Пятница. В Хабре тишина и покой. Так что я думаю, никому не помешаю, если ещё пофилософствую. :)
В статье приводится ссылка на примеры ошибок, обнаруженных в различных проектах. Я хотел напомнить, что у нас тоже есть аналогичная база. И мы ей очень гордимся. Дело в том, что примеры выписываются вручную и редактируются, чтобы они были коротким и понятными. Это базу можно использовать для изучения типовых опечаток и выработки каких-то рекомендаций, разработке стандартов кодирования и т.д.
На самом деле, это была попытка работать с небольшими командами (история вопроса). А так да, для одиночных пользователей теперь есть CppCat.
На самом деле, неинициализированные переменные в конструкторе, это очень даже часто не ошибки. Часто, это отложенная инициализация или оптимизация (не надо заполнять сразу все поля). А поведение компилятора тут ни причём. Если не читать неинициализированную переменную, то и беды не будет. Так что это конечно Warning, причём не очень сильный. Мы пока не хотим его делать в PVS-Studio/CppCat. Вреда от ложных срабатываний будет больше, чем пользы он найденных ошибок. Вот и вы пишите «море переменных не инициализировано». В этом море можно утонуть и не заметить настоящих бед. :)
А вот тут не понятно. Какой же это «style». Это полновесная ошибка. И CppCat тоже должен был её тоже заметить. Беззнаковая переменная всегда будет >= 0. Мы такие ошибки любим.
В статье приводится ссылка на примеры ошибок, обнаруженных в различных проектах. Я хотел напомнить, что у нас тоже есть аналогичная база. И мы ей очень гордимся. Дело в том, что примеры выписываются вручную и редактируются, чтобы они были коротким и понятными. Это базу можно использовать для изучения типовых опечаток и выработки каких-то рекомендаций, разработке стандартов кодирования и т.д.
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. Мы такие ошибки любим.
+2
Это базу можно использовать для изучения типовых опечаток и выработки каких-то рекомендаций, разработке стандартов кодирования и т.д.
Этим уже давно активно занимается 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 очень активно ругаются на несоответствие типов и неиспользуемые переменные.
+5
UFO just landed and posted this here
А удобная, оказывается, штука
0
Жалко, что cppcheck не сможет обработать исходники Qt программ, а только после обработки через moc, что усложняет анализ в разы.
0
CppCheck можно подключить к студии как внешний инструмент. Там есть флажок --template=vs как раз для форматирования вывода под студию. Работает с любой версией начиная с шестой.
0
Разработчики CppCat уже самостоятельно провели такое сравнение (с PVS-Studio), но с тех пор утекло много воды, а сравнение не очень объективно, так как PVS-Studio не предназначена для программистов-одиночек.
Обновлённое сравнение: habrahabr.ru/company/pvs-studio/blog/215469/
0
Sign up to leave a comment.
Анализируем исходный код с помощью cppcheck