Výběrem nástroj pro analýzu statickou kódovou

hlasů
54

Já jsem pracoval na projektu, kde jsem kódování v jazyce C v prostředí UNIX. Byl jsem pomocí nástroje nepouští vlákna zkontrolovat svůj zdrojový kód. Lint byl po dlouhou dobu (od roku 1979), může někdo navrhnout více nedávné analýze kódu nástroje bych mohl použít? Výhodně je nástroj, který je zdarma.

Položena 05/08/2008 v 22:19
zdroj uživatelem
V jiných jazycích...                            


15 odpovědí

hlasů
14

Pro C kód, určitě byste určitě používat Flexelint . Použil jsem ji za téměř 15 let a přísahat na to. Jedním z opravdu skvělých funkcí, které má, je, že varování je možné selektivně vypnout a zapnout prostřednictvím komentářů v kódu ( „/ * lint -e123 * /“). To se ukázalo být účinným nástrojem při dokumentaci jsi chtěl něco neobvyklého. „Jsem vypnout varovný X, proto tam je nějaký dobrý důvod, proč dělám X.“

Pro někoho zajímavé C C ​​++ otázky /, podívejte se na některé z jejich příkladů na jejich stránky a zjistit, jestli můžete přijít na chyby, aniž by při pohledu na narážky.

Odpovězeno 05/08/2008 v 22:42
zdroj uživatelem

hlasů
30

Nepřehlédněte kompilátor sám.

Přečtěte si dokumentaci kompilátor a najít všechny varování a chyby může poskytnout, a povolit tolik, kolik mají smysl pro vás.

Také se ujistěte, informujte svého kompilátoru k léčbě varování, jako jsou chyby, takže budete nuceni opravit hned. ( "-Werror" na gcc)

Také: „-Wall“ na gcc není ani umožnit všem varováním, nenechte se zmást.

Také také: check out Valgrind - it „automaticky detekovat [S] mnoho správy paměti a threading chyby a profil [s] rámci svých programů v detailu.“ (Zdarma!)

Valgrind není statický checker, ale je to skvělý nástroj! http://valgrind.org

Odpovězeno 05/08/2008 v 23:17
zdroj uživatelem

hlasů
12

Slyšel jsem dobré věci o Clang statického analyzátoru , který IIRC používá LLVM, jak je to backend. V případě, že je realizován na platformě, která by mohla být dobrou volbou.

Z toho, co vím, to dělá trochu víc než jen syntaktické analýzy. "Automatic Bug Finding", například.

Odpovězeno 06/08/2008 v 01:40
zdroj uživatelem

hlasů
5

Byli jsme s použitím Coverity Zabránit vyzkoušet C ++ zdrojový kód.

Není to bezplatný nástroj (i když jsem přesvědčen, že nabízejí bezplatné skenování pro open source projekty), ale je to jeden z nejlepších nástrojů pro statickou analýzu najdete. Slyšel jsem, že je to ještě působivější na C než v C ++, ale to nám pomohlo vyhnout celou řadu chyb doposud.

Odpovězeno 15/08/2008 v 18:47
zdroj uživatelem

hlasů
0

Tam je „-Weffc ++“ volba pro gcc, který podle manuálové stránky Mac OS X bude:

Varují před porušováním následujících pokynů stylu od Scott Meyers' faktickou C ++ knihy:

[Odstřihnout]

Vím, že budete požádáni o C, ale to je nejbližší vím ..

Odpovězeno 15/08/2008 v 23:03
zdroj uživatelem

hlasů
1

Dalo by se najít nástroj Uno užitečné. Je to jedna z mála možností volné non-hračky. To se liší od cupaniny, Flexelint atd zaměřit se na malý počet „sémantických“ chyb (ukazatel NULL derefs, indexy pole out-of-hranice, a použití neinicializované proměnné). To také umožňuje uživatelsky definované kontroly, jako lock-odemknutí disciplíny.

Jsem pracující na veřejném uvolnění nástupce nástroje, Orion ( OBSAHU již není k dispozici )

Odpovězeno 15/08/2008 v 23:39
zdroj uživatelem

hlasů
0

lint je neustále aktualizován ... tak proč byste měli chtít novější jedna.

BTW flexelint je lint

Odpovězeno 23/08/2008 v 12:42
zdroj uživatelem

hlasů
1

Lint podobné nástroje obecně trpí „planý poplach“ problém: oni hlásí mnohem více problémů, než ve skutečnosti existují. Pokud je podíl skutečně-užitečných varování je příliš nízká, může uživatel naučí prostě ignorovat nástroj. Další moderní nástroje vynaložit určité úsilí zaměřit se na nejpravděpodobnějších / zajímavých varování.

Odpovězeno 23/08/2008 v 15:29
zdroj uživatelem

hlasů
0

G'day,

Naprosto souhlasím s návrhy na čtení a trávit co kompilátor se ti po nastavení -Wall.

Dobrý statickou analýzu nástroj pro zabezpečení je FlawFinder napsal David Wheeler. To dělá dobrou práci hledají různé bezpečnostní chyby,

Nicméně, to nenahrazuje mající knowledgable někdo číst prostřednictvím svého kódu. David říká, že na své webové stránce, „Hlupák s nástrojem je stále blázen!“

Na zdraví,

Okrást

Odpovězeno 26/08/2008 v 16:21
zdroj uživatelem

hlasů
5

Nedávno jsem sestavil seznam všech statických analytických nástrojů na které jsem měl mám k dispozici, jsem stále v procesu vyhodnocování je všechny. Všimněte si, že se většinou jedná o nástroje pro analýzu bezpečnosti.

Odpovězeno 03/09/2008 v 23:11
zdroj uživatelem

hlasů
1

PC-lint / Flexelint jsou velmi silné a užitečné statické analytických nástrojů, a vysoce konfigurovatelný, ale bohužel není zadarmo.

Při prvním použití nástroje, jako je tento, mohou produkovat velké množství výstrah, které vedou k tomu, že je těžké rozlišit mezi hlavní a vedlejší ty. Z tohoto důvodu je nejlepší začít používat nástroj na kódu již v projektu jak je to možné, a pak jej spustit na vašem kódu tak často, jak je to možné, takže můžete čelit novým varováním, jak oni přijdou.

S nepřetržitém používání, jako je tento, budete brzy naučí, jak psát kód takovým způsobem, který potvrzuje pravidel uplatňovaných nástroje.

Z tohoto důvodu raději nástroje, jako je Lint, který běží poměrně rychle, a tak podpořit nepřetržité použití, spíše než více těžkopádné nástroje, které vám mohou skončit s použitím méně často, pokud vůbec.

Odpovězeno 20/12/2008 v 00:29
zdroj uživatelem

hlasů
0

Zjistil jsem, že to je obecně nejlepší používat více statické analytické nástroje k nalezení chyby. Každý nástroj je navržen tak odlišně, a oni mohou najít velmi odlišné věci od sebe navzájem.

Existuje několik dobrých diskuse v některé z rozhovorů zde . Je to z konference pořádané americkým ministerstvem pro vnitřní bezpečnost na statickou analýzu.

Odpovězeno 15/06/2011 v 07:53
zdroj uživatelem

hlasů
0

Řídké je počítačový softwarový nástroj, jsou již k dispozici pro Linux, jehož účelem je zjistit případné kódování chyby v linuxovém jádře.

Existují dva aktivní projekty Linux Kontrolní středisko zaměřené na zlepšení kvality loadable jaderné moduly.

  1. Linux Driver verifikace (LDV) - komplexní sada nástrojů pro ověření kódu statická source ovladačů zařízení Linux.
  2. KEDR Framework - rozšiřitelný framework pro dynamickou analýzu a verifikaci jaderných modulů.
  3. Další pokračující projekt je Linux Souborový systém ověření, že si klade za cíl vyvinout speciální sadu nástrojů pro ověření implementace systému souborů Linux.
Odpovězeno 20/12/2012 v 08:36
zdroj uživatelem

hlasů
4

Můžete použít cppcheck . Je snadno použitelný statický analytický nástroj kód.
Například:
cppcheck --enable=all .
bude kontrolovat všechny C / C ++ soubory v aktuální složce.

Odpovězeno 25/06/2015 v 15:54
zdroj uživatelem

hlasů
1

Můžete zkusit CppDepend , docela kompletní statické analyzátoru je k dispozici na systémech Windows a Linux procházka VS Plugin, IDE nebo příkazové řádky, a to zdarma pro open source přispěvatelů

Odpovězeno 26/06/2015 v 12:01
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more