инструменты статической проверки кода C++
От: Plague Россия 177230800
Дата: 05.05.03 16:56
Оценка:
Здравствуйте, menify, Вы писали:

M>Немного странная просьба.


M>Мы занимаемся исследованием различных инструментов по статической проверке кода (C/C++) — QAC/C++, PC-lint, CodeWizard, CodeCheck и т.д.


M>Что-то типа этого.


интересно было бы взглянуть на твои результаты тестирования этих программ...
... << RSDN@Home 1.0 beta 6 >>

06.05.03 12:14: Ветка выделена из темы BUG is good
Автор: menify
Дата: 30.04.03
— ПК
06.05.03 12:14: Перенесено модератором из 'C/C++' — ПК
Re[2]: инструменты статической проверки кода C++
От: menify Россия  
Дата: 06.05.03 01:01
Оценка:
Здравствуйте, Plague:

M>Мы занимаемся исследованием различных инструментов по статической проверке кода (C/C++) — QAC/C++, PC-lint, CodeWizard, CodeCheck и т.д.


P>интересно было бы взглянуть на твои результаты тестирования этих программ...


Официальный документ предоставить пока не могу — Internal Use Only

Но по русски сказать можно.
Пока еще официально протестированны 1.5 программы (Logiscope RuleChecker и не полностью QAC/C++).
Первое явно не рассчитано на реальную работу, а второй внолне на уровне.
Но мое ИМХО — PC-lint рулит , как по качеству проверки, так и по цене (240$ против 5000$ QAC++)
Но он проверяет только логические ошибки.
Для проверки стандартов кодирования (стиль оформления кода, метрики, комментарии) — рулит CodeCheck.
Хотя для метрик, лучше подойдет RSM.

Итого, чтобы полностью покрыть статический анализ нужно три инструмента: PC-lint, CodeCheck и RSM (на мой взгляд лучшие). Сумарная стоимость: 240$ + 1000$ + 200$ = 1440$, что на много выгоднее чем покупать QAC++(5000$) или пакет Logiscope (10000$).

Когда будет завершено исследование, могу выложить табличку с оценками всех тулов.

P.S. Боюсь, что после этого поста модераторы перенесут эту тему в "Средства разработки", что в принципе справедливо
Всего доброго.
Re[3]: инструменты статической проверки кода C++
От: headhunter  
Дата: 03.05.06 14:46
Оценка:
Здравствуйте, 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?
Re[4]: инструменты статической проверки кода C++
От: Alex_Avr Россия  
Дата: 04.05.06 07:57
Оценка:
Предупреждений компилятора недостаточно?
С уважением, Александр Авраменко.
Re[5]: инструменты статической проверки кода C++
От: headhunter  
Дата: 04.05.06 11:29
Оценка:
Здравствуйте, Alex_Avr, Вы писали:

A_A>Предупреждений компилятора недостаточно?


Какого именно компилятора и с какими ключами?

Пробовали MSVC++ 2005, gcc 3.3, icc 9.0, комбинаций ключей, на которых бы удалось получить предупреждения на приведённом фрагменте найти не удалось. Может мы что-то упустили?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.