Я пытаюсь использовать PCLint с C ++.
Я использую только библиотеку заголовков Eigen, которая определена как каталог include в моем файле cmake. Я попробовал следующую команду:
lint-nt.exe std.lnt -i"pathToEigenLibrary" "listOfFileToLint"
проблема в том, что я понятия не имею, что мне нужно написать в моем std.lnt, чтобы не игнорировать ошибку в библиотеке Eigen. Я старался :
-wlib(0)
-libh("pathToEigenLibrary")
-libdir("pathToEigenLibrary")
У кого-нибудь есть опыт с этим?
Я получаю много ошибок, таких как:
\Eigen\Eigen\src\Core\util\XprHelper.h 337 Error 1048: expected a constant expression
Eigen\Eigen\src\Core\util\XprHelper.h 279 Error 1048: expected a constant expression
While instantiating struct Eigen::internal::nested<Eigen::DiagonalProduct<<1>,<2>,<3>>> at File Eigen\Eigen\src\Core\DiagonalProduct.h line 50
Из руководства пользователя PC-lint:
Заголовочный файл может стать заголовочным файлом библиотеки, если:
(i) Он подпадает под одну из четырех широких категорий option + libclass, а именно. all, ansi, angle и foreign (описано ниже) и не исключается ни параметром -libdir, ни параметром -libh.
…
Далее следует более полное описание трех опций, используемых для указания того, является ли заголовочный файл библиотечным заголовочным файлом.
• + libclass (идентификатор [, идентификатор] …)
определяет набор или наборы заголовочных файлов, которые предполагаются как заголовочные файлы библиотеки. Каждый идентификатор может быть одним из:угол Все заголовки указаны с помощью угловых скобок.
…
Так что, по-видимому, если вы включите свои библиотеки #include <library.h>
(и не #include "library.h"
) ты можешь использовать libclass(angle)
игнорировать заголовки библиотеки. У меня нет PC-lint и, следовательно, я не могу проверить его, так что возьмите это с крошкой соли.
Я попытался использовать PC-lint с кодом, который использует Eigen, и в конце концов сдался. Начиная с 6 месяцев назад PC-lint задыхается от какого-то собственного кода и может не генерировать полезную диагностику.