Pull to refresh

Comments 25

Спасибо, всегда интересно читать такого рода статьи.

Извините за наглость, а было ли сообщено об этих ошибках в багзиллу проекта Notepad++? Как я мог посмотреть здесь по последним тикетам, нет. Пожалуйста, если вам не сложно, либо вкратце перечислите найденные ошибки и файлы, которые содержали эти ошибки, чтобы заинтересованные люди оформили баг-репорты, либо напишите им самостоятельно. Это послужит развитию довольно неплохого проекта.
Не все сразу. Я жду перевода статей. Потом я их опубликую и отошлю ссылки людям с некоторыми комментариями и дополнениями.
Мне кажется, что какой-то умный фильтр должен быть по умолчанию. Типа — выдавать самые «интересные» штучки…
Конечно. Но подобные фильтр часто возможно сделать только когда мы знаем много о контексте, то есть храним много данных.
Молодцы, хорошее дело делаете!
Давно уже ничего на C++ не программировал, но прочитать интересно было
В приведенном примере я C++ не увидел, я его вообще редко вижу в Windows приложениях. Обычно это некое подмножество, называемое Си с классами. Очень неудачное подмножество для разработки desktop приложений. Уж очень синтаксис изобилует макросами и другими способами ногу прострелить.
В любом случае, я C++ изучал в университете в рамках лабораторных работ и курсовых, на этом мои знания ограничены. Синтаксис и данная фраза «Напомню, проект Notepad++ собирается компилятором Visual C++ ...» привели меня мысль о С++, а является ли «Обычно это некое подмножество, называемое Си с классами.» меня сильно не интересует, т.к. в статье я увидел как происходит анализ кода.
Правильно, но это не канонический С++, это некий С++ застрявший на уровне 1990 года, то есть даже без простейших вещей типа enum'ов, которые кстати бы помешали возникновению некоторых тут приведенных ошибок. Опять же используется приведение типов в сишном стиле вместо православного static_cast'а.
Про нормальное метапрограммирование я вообще молчу.
Ждем версию под линукс.
А еще интересно сравнить с cppcheck, например.
Я уже года 2 как жду :(
Так надо не просто ждать, а поучаствовать материально.
К сожалению, у меня специализация немного другая. В плюсах я слабоват (это если очень мягко сказать) :)
Я же не призываю поучаствовать из личного кармана. Есть карман работодателя.
Прошу прощения. Я наверно неправильно понял текст комментария, на который отвечал. Я думал, что речь идет про Notepad++ под линукс
У меня вопрос. А чем вы парсите С++, что-то самописное? Если не секрет, конечно.
Может лучше вслед за прогрессивным человечеством переезжать на llvm? Там уже из коробки есть статический анализатор кода, в том числе и для плюсов
Оказывается я написал здесь неправду. В примере с CharUpperW ошибки нет. И к сожалению меня никто не поправил. Сам заметил, когда решил реализовать аналогичное правило в PVS-Studio.

Дело в том, что CharUpperW может работать как со строкой, так и с отдельными символами. Если старшая часть указателя нулевая, то считается что это не указатель, а символ. Интерфейс WIN API в этом конечно месте опечалил своей кривизной, но код в Notepad++ написан корректно.

Кстати, теперь получается, что Intel C++ вообще не нашел ни одной ошибки.
А сколько времени работал анализатор над 70000 строками кода?
Специальные замеры скорости я не делал. У нас есть база проектов для регрессионных тестов. Всего 64 проекта. Суммарное количество строк кода где-то около 7 миллионов.
На 4-х ядерной машине (Intel Core 2 Quad Q9400, 2.66 GHz) с 8 гигабайтами памяти и обыкновенным жестким диском WD3200 все эти проекты проверяются в среднем за 3 часа 50 минут.
Отмечу, что анализ выполняется параллельно. Чем больше ядер, тем лучше.
Sign up to leave a comment.