Comments 9
интересно всё-таки, что ж там такое не так с stdafx?
Я сильно удивлён. То есть прекомпилированные базы хранят просто «stdafx.h», а не полный путь? то есть в теории, если два инклудника по разным путям имеют одно имя, то можно получить шар с волосами, передав один раз -I в одном порядке, другой раз в другом?! O_O
Да, полное имя не проверяется.
Компилятор ориентируется по ключу /Yu (use precompiled header), в который передаётся имя файла. Встретив директиву #import с таким именем, компилятор подставит содержимое pch файла, переданного через флаг /Fp, проигнорировав ключи /I.
Если же компилятор запущен в режиме препроцессирования (флаг /P), /Yu и /Fp будут игнорироваться, а порядок передачи /I будет влиять на то, какой файл включается.
Компилятор ориентируется по ключу /Yu (use precompiled header), в который передаётся имя файла. Встретив директиву #import с таким именем, компилятор подставит содержимое pch файла, переданного через флаг /Fp, проигнорировав ключи /I.
Если же компилятор запущен в режиме препроцессирования (флаг /P), /Yu и /Fp будут игнорироваться, а порядок передачи /I будет влиять на то, какой файл включается.
Вы своей припиской в конце статьи убили все комменты. Разом.
Спасибо! Даже триальная версия сильно помогла, найдено несколько ошибок (в основном опечатки), и я буду рекомендовать полноценный PVS-Studio для покупки. Но так же есть несколько пожеланий:
1) В CppCat с январской статьи не появилась опция отключения конкретной ошибки, ошибок типа «V668 There is no sense in testing the 'pointer' pointer against null, as the memory was allocated using the 'new' operator. The exception will be generated in the case of memory allocation error.» очень много, а в проверенных исходниках не используется исключение при нехватки памяти (хэндлер стоит специальный).
2) Неверная ошибка «V575 The null pointer is passed into 'CreateDIBitmap' function. Inspect the fourth argument.». На самом деле четвёртый аргумент может быть NULL, если третий — 0.
3) Раздражающая «V648 Priority of the '&&' operation is higher than that of the '||' operation.» — вы действительно думаете, что программисты неспособны выучить приоритеты булевой алгебры (хотя это основа программирования)?
4) Триальная версия требует онлайновой активации (даже оффлайновая активация на самом деле онлайновая), это было неприятным сюрпризом отложившим работу с CppCat на сутки (специфика работы требует изоляции от и-нета). по моему триал на то и триал, что НЕ требует регистрации.
1) В CppCat с январской статьи не появилась опция отключения конкретной ошибки, ошибок типа «V668 There is no sense in testing the 'pointer' pointer against null, as the memory was allocated using the 'new' operator. The exception will be generated in the case of memory allocation error.» очень много, а в проверенных исходниках не используется исключение при нехватки памяти (хэндлер стоит специальный).
2) Неверная ошибка «V575 The null pointer is passed into 'CreateDIBitmap' function. Inspect the fourth argument.». На самом деле четвёртый аргумент может быть NULL, если третий — 0.
3) Раздражающая «V648 Priority of the '&&' operation is higher than that of the '||' operation.» — вы действительно думаете, что программисты неспособны выучить приоритеты булевой алгебры (хотя это основа программирования)?
4) Триальная версия требует онлайновой активации (даже оффлайновая активация на самом деле онлайновая), это было неприятным сюрпризом отложившим работу с CppCat на сутки (специфика работы требует изоляции от и-нета). по моему триал на то и триал, что НЕ требует регистрации.
Спасибо! Даже триальная версия сильно помогла, найдено несколько ошибок (в основном опечатки).
Приятно услышать, когда инструмент оказывается полезен. Спасибо.
В CppCat с январской статьи не появилась опция отключения конкретной ошибки.
В CppCat нет и не будет настроек для отключения отдельных ошибок. Если Ваша команда начнёт использовать PVS-Studio, то никаких проблем не будет. Там можно отключать отдельные предупреждения. В случае CppCat, тоже можно что-то придумать. Например, в глобальном заголовочном файле (таком как stdafx.h) можно написать комментарий вида:
//-V:new:668
Я думаю, это устранит практически все ложные срабатывания.
Неверная ошибка «V575 The null pointer is passed into 'CreateDIBitmap' function. Inspect the fourth argument.». На самом деле четвёртый аргумент может быть NULL, если третий — 0.
Это недоработка. Выписал себе в todo. Спасибо. Про такие недоработки просьба сообщать.
вы действительно думаете, что программисты неспособны выучить приоритеты булевой алгебры (хотя это основа программирования)?
Это прозвучит пренебрежительно, но да.
На вскидку: V593, V502.
И что более важно, такой код заставляет читателя тратить намного больше времени на его понимания.
Триальная версия требует онлайновой активации (даже оффлайновая активация на самом деле онлайновая)
Нечего ответить. Ну вот такой вот триал. :)
Sign up to leave a comment.
Анализатор PVS-Studio проверяет TortoiseGit