forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Статанал (http://forum.boolean.name/showthread.php?t=16272)

impersonalis 02.02.2012 23:53

Статанал
 
Поделитесь опытом использования ПО, выполняющим статический анализ кода. :)

impersonalis 18.02.2012 23:02

Ответ: Статанал
 
Неужто даже форумные движкописатели не юзали?

impersonalis 19.02.2012 20:52

Ответ: Статанал
 
Сегодня ко мне в руки попал февральский ХАКЕР
( http://www.xakep.ru/xa/?id=157 )
Как по заказу: в нём обзор средств статического анализа для C++

Samodelkin 20.02.2012 00:19

Ответ: Статанал
 
Наверное ты уже читал, но все же:
http://habrahabr.ru/blogs/cpp/75123/

Тоже недавно задумался над статическим анализатором, но потом решил лучше поработать над традиционными методами отладки, а уже потом, когда их возможности иссякнут, применять статические анализаторы.
Вот по традиционным методам статьи:
http://dtf.ru/articles/read.php?id=36376
http://dtf.ru/articles/read.php?id=36547
http://dtf.ru/articles/read.php?id=37058

Цитата:

Как по заказу: в нём обзор средств статического анализа для C++
Там много полезной информации?

impersonalis 20.02.2012 11:30

Ответ: Статанал
 
2Samodelkin
Если коротко: пока буду пробовать cppcheck. Скоро номер легально появится в электронном виде на сайте.
Спасибо за ссылки: часть действительно уже видел, но есть и интересные аспекты.

HolyDel 20.02.2012 20:07

Ответ: Статанал
 
Пользовался как-то студийным статическим анализатором. Мне не понравилось. Например, он ругается на строчки:

Цитата:

somefunc(short i, short j)
{
float m[16];
assert(i>=0 && i<4 && j>=0 &&j<4);
m[i*4 + j];
}
понятное дело, что я могу выйти за границы массива, если в i or j будет какаято левая фигня. но ведь это отсеивается ассертом. но статическому анализатору пофиг.

зы, название не говорящее. я думал это какой-то предмет типа матанала. и поэтому долго не заходил.

Samodelkin 20.02.2012 23:52

Ответ: Статанал
 
cppcheck попробовал - вроде работает =).

Но я его не интегрировал никуда.
Попробовал Visual Lint (там в составе тоже cppcheck есть) подключить к Visual Studio 2010 EE но вобщем там напонятно - http://www.riverblade.co.uk/products...started_guide/ - в разделе Configuration просят запустить Visual Lint Configuration Wirard которого после инсталляции нигде нету.
Да в любом случае он на 30 дней тока, потом покупать...

Вот в простом режиме (без интеграции) cppcheck не пропускает ошибки? А то может ему какой то информации о проектах не хватает?

Опробовал его на движке - там около 100 файлов, каждый по 1-5к строк в среднем, нашел около 40 ошибок и 15 ворнингов. Причем в общем в этих 40 ошибках, такие как например вначале функции я не проверил указатель, который может быть нулевой и далее 10 вызовов этого указателя генерирует 10 ошибок. так что по сути там 4 непроверенных указателя, а не 40 ошибок. И кстати откуда cppcheck знает проверял ли я указатель прежде чем передать его в функцию? он вообще анализирует откуда какие функции вызываются и т п? Короче я считаю ошибок нашел мало. В MSVS warning level 4 и то более информативен будет, но как дополнительное средство cppcheck использовать можно =).

Еще один недостаток то что он однопоточный, работает медленно, а только 12% нагрузки на процессор.

impersonalis 21.02.2012 12:48

Ответ: Статанал
 
Цитата:

Вот в простом режиме (без интеграции) cppcheck не пропускает ошибки?
Да вроде не пропускает. Детально пока не исследовал.
Цитата:

но как дополнительное средство cppcheck использовать можно =).
Ну ясно, что не панацея


Часовой пояс GMT +4, время: 07:37.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot