Здравствуйте, menify, Вы писали:
M>Здравствуйте, Plague:
M>>Мы занимаемся исследованием различных инструментов по статической проверке кода
...
P>>интересно было бы взглянуть на твои результаты тестирования этих программ...
M>Официальный документ предоставить пока не могу — Internal Use Only
...
M>Итого, чтобы полностью покрыть статический анализ нужно три инструмента: PC-lint, CodeCheck и RSM (на мой взгляд лучшие). Сумарная стоимость: 240$ + 1000$ + 200$ = 1440$, что на много выгоднее чем покупать QAC++(5000$) или пакет Logiscope (10000$).
M>Когда будет завершено исследование, могу выложить табличку с оценками всех тулов.
Рискну поднять древнюю тему, просто именно сейчас занялся поисками средств статического анализа кода. Хотелось бы узнать, есть ли что-то лучшее чем PC-lint и не появилось ли open-source аналогов для функциональности lint, то есть поиск неявных ошибок. Интересует С++. Есть ли у кого-то положительный опыт использования PC-lint? Что можете сказать о продукте C++test фирмы Parasoft?
Конкретно, может кто решал такую задачу, поделитесь опытом -- надо проиндицировать все неявные приведения типов в программе. Например во фрагменте:
#define CONST1 736u
#define CONST2 764u
unsigned long long f(unsigned long long) {
unsigned bbb = CONST1;
return (bbb);
}
unsigned int main() {
unsigned a = CONST2;
unsigned long long b = 0;
b = a;
f(a);
return (0);
}
хотелось бы видеть варнинги на следующие строчки:
1) "b = a;"
2) "f(a);"
3) "return (bbb);"
поскольку в них происходят неявные преобразования типов.
Вопрос: можно ли такое устроить с помощью PC-lint?