Search
Write a publication
Pull to refresh

Comments 12

Если макрос __SLINE__ был объявлен в коде, то что же помешало clang'у его раскрыть?
По причине, что Clang, это не божественный артефакт, а просто программа со своими багами и недоработками. :)
Встретив её, анализатор PVS-Studio пытается как-то обойти некорректный код, чтобы продолжить анализ далее.

А почему PVS-Studio не сообщил пользователю об этом? Тогда и «позор анализатору» никто не спешил бы кричать. Возможно, даже сам вопрос до вас и не дошел бы.
Он предупреждает, выдавая предупреждение V001. Но по умолчанию это предупреждение отключено в настройках. А то оно сбивало с толку неокрепшие умы. Мол что-то в коде не удалось разобрать. При этом всё проверилось нормально. В 99% случаев это не оказывает последствий на качество анализа. Но человек волнуется, что что-то пошло не так. :)
А часто бывает, что валидный код не удается разобрать при использовании препроцессора компилятора Visual C++?
Однозначно сложно ответить. Дело в том, что в Visual C++ как-бы два препроцессора. Один для внутренних нужд, используемый при компиляции. Как я понимаю он работает очень хорошо, быстро и практически никогда не ошибается (по крайней мере я не могу вспомнить такие случаи). Второй генерирует для программистов препроцессированные *.i файлы. Он медленный и более глючный. Мы не раз сталкивались с ошибками в нём.

Хм, я проверил с clang 3.5 и эти макросы работают нормально. Может быть, этот баг уже поправлен в clang, или вы как-то неправильно его вызываете? Или в коде есть что-то ещё, что мешает clang работать правильно?
Добрый день! Вопрос не по теме немного. Узнал про ваш замечательный продукт, хотел посмотреть его, если есть с Delphi. На сайте ничего подобного не нашел кроме новости «Мы приняли решение начиная с версии 5.21 прекратить поддержку в PVS-Studio среды разработки Embarcadero RAD Studio. ». Т.е. у вас была версия для Delphi? Можно её посмотреть где-то, хоть вы больше ее и не поддерживаете? Спасибо!
Эмм… А вы не думаете, что разумно как-то сообщать разработчику о том, что есть куски кода после препроцессирования, которые вы не смогли проанализировать? Да, их может быть много, но это само по себе — плохой признак. Я не прав?
Анализатор сообщает про это, выдавая предупреждение V001. A code fragment from 'file' cannot be analyzed. Но по умолчанию это предупреждение отключено в настройках. А то оно сбивало с толку неокрепшие умы. Мол что-то в коде не удалось разобрать. При этом всё проверилось нормально. В 99% случаев это не оказывает последствий на качество анализа. Но человек волнуется, что что-то пошло не так. :)
Понимаю, что отвечаю на очень старый текст, но…

clang даже версии 3.0 и выше справляется с этим макросом без проблем — https://godbolt.org/g/BkmXjn

clang 3.0 был выпущен в 2012 году, хотя статья написана в 2015.

Очень странно.

Видимо, причина кроется не только в самом clang, а в окружающем его коде и/или как clang был собран.
Sign up to leave a comment.