Vra

Ek is besig met 'n projek waar ek kodering in C in 'n UNIX omgewing. Ek het al met behulp van die pluis instrument om my bronkode te gaan. Pluis is om 'n lang tyd (sedert 1979), kan enigiemand dui op 'n meer onlangse kode analise hulpmiddel wat ek kon gebruik? Verkieslik 'n instrument wat vry is.

Was dit nuttig?

Oplossing

Moenie vergeet van die samesteller self.

Lees dokumentasie samesteller en vind al die waarskuwings en foute kan verskaf, en dan in staat stel om soveel as sin maak vir jou.

Maak ook seker dat jou samesteller vertel om waarskuwings soos foute te behandel sodat jy gedwing is om hulle dadelik te los. ( "-Werror" op gcc)

Ook:. "Wall" op gcc doen nie in staat stel alle waarskuwings, moenie geflous word

Ook ook: (! Gratis) check valgrind - dit ". Outomaties [s] baie geheue bestuur en threading foute, en profiel [s] jou programme in detail"

Valgrind is nie 'n statiese checker, maar dit is 'n groot hulpmiddel! http://valgrind.org

Ander wenke

Vir C-kode, jy beslis moet beslis gebruik Flexelint . Ek gebruik dit vir byna 15 jaar en sweer by dit. Een van die baie groot eienskappe dit het is dat waarskuwings selektief kan afgeskakel word en op via kommentaar in die kode ( "/ * pluis -e123 * /"). Dit blyk te wees 'n kragtige dokumentasie hulpmiddel wees wanneer jy wou iets uit die gewone. "Ek draai af waarskuwing X, daarom is daar 'n paar goeie rede ek doen X."

Vir iemand in interessante C / vrae C ++, kyk na 'n paar van hul voorbeelde op hul webwerf en sien as jy kan uit te vind die foute sonder om na die wenke.

Ek het goeie dinge oor klang statiese ontleder , wat IIRC gebruik LLVM as dit backend gehoor. As dit geïmplementeer op jou platform, kan dit 'n goeie keuse wees.

Van wat ek verstaan, is dit nie 'n bietjie meer as net sintaksis analise. "Outomatiese Bug vind", byvoorbeeld.

Ons het al met behulp Coverity Voorkom om te kyk na C ++ source code.

Dit is nie 'n gratis program (alhoewel ek glo dat hulle bied 'n gratis scan vir open source projekte), maar dit is een van die beste statiese analise gereedskap wat jy sal vind. Ek het gehoor dit is selfs meer indrukwekkend op C as op C ++, maar dit het ons gehelp om so ver te vermy 'n hele aantal foute.

Ek het onlangs 'n lys van al die statiese analise-instrumente Ek het tot my beskikking, ek is nog in die proses van evaluering almal. Let wel, hierdie is meestal sekuriteit analise-instrumente.

Jy kan gebruik cppcheck . Dit is 'n maklike statiese kode analise hulpmiddel gebruik
Byvoorbeeld:.
cppcheck --enable=all .
sal alle C / C ++ lêers check onder die huidige gids.

pluis soos gereedskap algemeen ly aan 'n "vals alarm" probleem: hulle rapporteer 'n baie meer kwessies as werklik bestaan. As die verhouding van werklik-nuttige waarskuwings te laag is, die gebruiker leer om net die instrument te ignoreer. Meer moderne gereedskap bestee 'n paar pogings om te fokus op die mees waarskynlike / interessante waarskuwings.

PC-pluis / Flexelint is baie kragtige en bruikbare statiese analise-instrumente, en hoogs konfigureerbare, maar ongelukkig nie gratis.

As 'n instrument soos hierdie eerste gebruik van, kan hulle groot getalle van waarskuwings, wat kan maak dit moeilik om te onderskei tussen belangrike en minder belangrike mense te produseer. Daarom is dit die beste om te begin met behulp van die instrument op jou kode so vroeg in die projek as moontlik, en dan om dit uit te voer op jou kode so dikwels as moontlik, sodat jy kan gaan met nuwe waarskuwings as hulle kom.

Met voortdurende gebruik soos hierdie, jy gou leer hoe om jou kode te skryf in 'n manier wat bevestig aan die deur die instrument toegepas reëls.

As gevolg van hierdie, ek verkies gereedskap soos Lint wat relatief vinnig hardloop, en so voortdurende gebruik aan te moedig, eerder as die meer omslagtig gereedskap wat jy kan uiteindelik met behulp van minder dikwels, if at all.

Jy kan probeer CppDepend , 'n mooi volledige statiese ontleder beskikbaar op Windows en Linux, gedink VS Plugin, IDE of command line, en dit is gratis vir open source bydraers

Jy kan die Uno instrument vind nuttig. Dit is een van die min gratis nie-speelgoed opsies. Dit verskil van pluis, Flexelint, ens in te fokus op 'n klein aantal "semantiese" foute (nul pointer derefs, out-of-grense verskeidenheid indekse, en die gebruik van geïnitialiseerd veranderlikes). Dit laat ook die gebruiker-gedefinieerde tjeks, soos uitsluiting ontsluit dissipline.

Ek is besig om 'n openbare vrystelling van 'n opvolger instrument, Orion ( inhoud meer beskikbaar )

Daar is 'n "-Weffc ++" opsie vir gcc wat volgens die Mac OS X man bladsy sal:

  

Waarsku oor oortredings van die volgende riglyne styl van Scott Meyers se Doeltreffende C ++ boek:

[knip]

Ek weet jy vra oor C, maar dit is die naaste wat ek weet van ..

pluis is voortdurend opgedateer ... so hoekom sou jy wil 'n meer onlangse een.

BTW flexelint is pluis

G'day,

Ek is dit heeltemal eens met die voorstelle te lees en te verteer wat die samesteller is wat jy vertel nadat die opstel van Wall.

'n goeie statiese analise hulpmiddel vir sekuriteit is FlawFinder geskryf deur David Wheeler. Dit doen 'n goeie werk op soek na verskeie sekuriteit wedervaringe,

Dit beteken egter nie vervang met 'n kundige iemand lees jou kode. Soos Dawid sê aan sy webblad, " 'n dwaas met 'n instrument is nog 'n gek!"

Cheers,

Rob

Ek het dat dit oor die algemeen die beste om verskeie statiese analise-instrumente gebruik om foute vind gevind. Elke instrument is anders ontwerp, en hulle kan baie verskillende dinge te vind van mekaar.

Daar is 'n paar goeie gesprekke in sommige van die gesprekke hier . Dit is van 'n konferensie gehou deur die Amerikaanse Departement van Binnelandse Veiligheid op statiese analise.

skraal is 'n rekenaar sagteware instrument, wat reeds beskikbaar op Linux, wat ontwerp is om moontlike kodering foute vind in die Linux-kern.

Daar is twee aktiewe projekte van Linux verifikasie gemik om die gehalte van die laaibare kernmodules te verbeter.

  1. Linux Driver verifikasie (LDV) -. 'N omvattende toolset vir statiese bronkode verifikasie van Linux device drivers
  2. Kedr Framework -. N extensible raamwerk vir dinamiese analise en verifikasie van kernmodules
  3. Nog 'n deurlopende projek is Linux File System verifikasie wat daarop gemik is om 'n toegewyde toolset vir verifikasie van Linux lêer stelsel implementering ontwikkel.
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top