Comments 25
Спасибо, всегда интересно читать такого рода статьи.
Извините за наглость, а было ли сообщено об этих ошибках в багзиллу проекта Notepad++? Как я мог посмотреть здесь по последним тикетам, нет. Пожалуйста, если вам не сложно, либо вкратце перечислите найденные ошибки и файлы, которые содержали эти ошибки, чтобы заинтересованные люди оформили баг-репорты, либо напишите им самостоятельно. Это послужит развитию довольно неплохого проекта.
Извините за наглость, а было ли сообщено об этих ошибках в багзиллу проекта Notepad++? Как я мог посмотреть здесь по последним тикетам, нет. Пожалуйста, если вам не сложно, либо вкратце перечислите найденные ошибки и файлы, которые содержали эти ошибки, чтобы заинтересованные люди оформили баг-репорты, либо напишите им самостоятельно. Это послужит развитию довольно неплохого проекта.
+2
Ссылка что-то не вставилась, вот: sourceforge.net/tracker/?group_id=95717&atid=612384
0
Не все сразу. Я жду перевода статей. Потом я их опубликую и отошлю ссылки людям с некоторыми комментариями и дополнениями.
+1
Мне кажется, что какой-то умный фильтр должен быть по умолчанию. Типа — выдавать самые «интересные» штучки…
0
Молодцы, хорошее дело делаете!
0
Давно уже ничего на C++ не программировал, но прочитать интересно было
0
В приведенном примере я C++ не увидел, я его вообще редко вижу в Windows приложениях. Обычно это некое подмножество, называемое Си с классами. Очень неудачное подмножество для разработки desktop приложений. Уж очень синтаксис изобилует макросами и другими способами ногу прострелить.
+2
В любом случае, я C++ изучал в университете в рамках лабораторных работ и курсовых, на этом мои знания ограничены. Синтаксис и данная фраза «Напомню, проект Notepad++ собирается компилятором Visual C++ ...» привели меня мысль о С++, а является ли «Обычно это некое подмножество, называемое Си с классами.» меня сильно не интересует, т.к. в статье я увидел как происходит анализ кода.
0
Правильно, но это не канонический С++, это некий С++ застрявший на уровне 1990 года, то есть даже без простейших вещей типа enum'ов, которые кстати бы помешали возникновению некоторых тут приведенных ошибок. Опять же используется приведение типов в сишном стиле вместо православного static_cast'а.
Про нормальное метапрограммирование я вообще молчу.
Про нормальное метапрограммирование я вообще молчу.
+1
Ждем версию под линукс.
А еще интересно сравнить с cppcheck, например.
А еще интересно сравнить с cppcheck, например.
+1
Я уже года 2 как жду :(
0
Так надо не просто ждать, а поучаствовать материально.
+2
К сожалению, у меня специализация немного другая. В плюсах я слабоват (это если очень мягко сказать) :)
0
Прошу прощения. Я наверно неправильно понял текст комментария, на который отвечал. Я думал, что речь идет про Notepad++ под линукс
0
У меня вопрос. А чем вы парсите С++, что-то самописное? Если не секрет, конечно.
0
Не секрет. Читать тут: "Для тех, кому в IT-стартапе требуется разбор Си++-кода"
0
Оказывается я написал здесь неправду. В примере с CharUpperW ошибки нет. И к сожалению меня никто не поправил. Сам заметил, когда решил реализовать аналогичное правило в PVS-Studio.
Дело в том, что CharUpperW может работать как со строкой, так и с отдельными символами. Если старшая часть указателя нулевая, то считается что это не указатель, а символ. Интерфейс WIN API в этом конечно месте опечалил своей кривизной, но код в Notepad++ написан корректно.
Кстати, теперь получается, что Intel C++ вообще не нашел ни одной ошибки.
Дело в том, что CharUpperW может работать как со строкой, так и с отдельными символами. Если старшая часть указателя нулевая, то считается что это не указатель, а символ. Интерфейс WIN API в этом конечно месте опечалил своей кривизной, но код в Notepad++ написан корректно.
Кстати, теперь получается, что Intel C++ вообще не нашел ни одной ошибки.
0
А сколько времени работал анализатор над 70000 строками кода?
0
Специальные замеры скорости я не делал. У нас есть база проектов для регрессионных тестов. Всего 64 проекта. Суммарное количество строк кода где-то около 7 миллионов.
На 4-х ядерной машине (Intel Core 2 Quad Q9400, 2.66 GHz) с 8 гигабайтами памяти и обыкновенным жестким диском WD3200 все эти проекты проверяются в среднем за 3 часа 50 минут.
На 4-х ядерной машине (Intel Core 2 Quad Q9400, 2.66 GHz) с 8 гигабайтами памяти и обыкновенным жестким диском WD3200 все эти проекты проверяются в среднем за 3 часа 50 минут.
0
Отмечу, что анализ выполняется параллельно. Чем больше ядер, тем лучше.
0
Sign up to leave a comment.
Разница в подходах анализа кода компилятором и выделенным инструментом