Comments 12
Если макрос __SLINE__ был объявлен в коде, то что же помешало 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 был собран.
clang даже версии 3.0 и выше справляется с этим макросом без проблем — https://godbolt.org/g/BkmXjn
clang 3.0 был выпущен в 2012 году, хотя статья написана в 2015.
Очень странно.
Видимо, причина кроется не только в самом clang, а в окружающем его коде и/или как clang был собран.
Sign up to leave a comment.
PVS-Studio и враждебная среда обитания