Het kiezen van een statische code analyse tool

stemmen
54

Ik ben bezig met een project waar ik codering in C in een UNIX-omgeving. Ik gebruik het lint hulpmiddel om mijn source code te controleren. Lint is al een lange tijd (sinds 1979), kan iemand wijzen op een meer recente code analyse tool ik kon gebruiken? Bij voorkeur een instrument dat vrij is.

De vraag is gesteld op 05/08/2008 om 22:19
bron van user
In andere talen...                            


15 antwoorden

stemmen
30

Laat de compiler zelf niet over het hoofd zien.

Lees de documentatie van de compiler en vind alle waarschuwingen en fouten die het kan bieden, en vervolgens in staat stellen zo veel als zinvol voor u.

Zorg er ook voor om uw compiler vertellen om waarschuwingen als fouten te behandelen, zodat je gedwongen om ze meteen te repareren. ( "-Werror" op GCC)

Ook: "-Wall" op gcc werkt niet in staat alle waarschuwingen, laat je niet misleiden.

Ook ook: check out valgrind - het "detecteert automatisch [s] vele geheugenbeheer en threading bugs, en het profiel [s] uw programma's in detail." (Gratis!)

Valgrind is geen statisch checker, maar het is een geweldig hulpmiddel! http://valgrind.org

antwoordde op 05/08/2008 om 23:17
bron van user

stemmen
14

Voor de C-code, moet u zeker moet zeker gebruiken Flexelint . Ik gebruikte het voor bijna 15 jaar en zweren erbij. Een van de echt grote mogelijkheden die het heeft, is dat waarschuwingen selectief kan worden in- en uitgeschakeld via de opmerkingen in de code ( "/ * pluizen -e123 * /"). Dit bleek een krachtige documentatiehulpmiddel zijn wanneer je wilde iets uit het gewone. "Ik ben het uitschakelen waarschuwing X, daarom is er een aantal goede reden ik doe X."

Voor iedereen in interessante C / vragen C ++, kijken naar enkele van de voorbeelden op hun site en kijk of je kunt achterhalen van de bugs zonder te kijken naar de hints.

antwoordde op 05/08/2008 om 22:42
bron van user

stemmen
12

Ik heb goede dingen over gehoord clang statische analyse , die IIRC gebruikt LLVM als het backend. Als dat is uitgevoerd op uw platform, zou dat een goede keuze.

Van wat ik begrijp, het doet een beetje meer dan alleen syntax analyse. "Automatic Bug Finding", bijvoorbeeld.

antwoordde op 06/08/2008 om 01:40
bron van user

stemmen
5

Ik heb onlangs een lijst samengesteld van alle statische analyse tools die ik had tot mijn beschikking, ik ben nog steeds in het proces van de evaluatie van hen allen. Let op, deze zijn meestal security analyse-instrumenten.

antwoordde op 03/09/2008 om 23:11
bron van user

stemmen
5

We gebruiken Coverity Prevent om te controleren of C ++ broncode.

Het is niet een gratis tool (hoewel ik denk dat ze bieden gratis scannen op open source-projecten), maar het is een van de beste statische analyse tools die u kunt vinden. Ik heb gehoord dat het nog indrukwekkender op C dan op C ++, maar het hielp ons tot nu toe voorkomen dat een groot aantal bugs.

antwoordde op 15/08/2008 om 18:47
bron van user

stemmen
4

U kunt gebruik maken cppcheck . Het is een eenvoudig te gebruiken van statische code analyse tool te gebruiken.
Bijvoorbeeld:
cppcheck --enable=all .
alle C / C ++ bestanden te controleren in het kader van de huidige map.

antwoordde op 25/06/2015 om 15:54
bron van user

stemmen
1

U kunt proberen CppDepend , een behoorlijk compleet statische analyzer beschikbaar in de Windows en Linux, dacht VS Plugin, IDE of command line, en het is gratis voor open source contributors

antwoordde op 26/06/2015 om 12:01
bron van user

stemmen
1

PC-lint / Flexelint zijn zeer krachtig en nuttig statische analyse-instrumenten, en zeer configureerbare, maar helaas niet gratis.

Wanneer een hulpmiddel als dit het eerste gebruik, kunnen ze grote aantallen waarschuwingen, die kan het moeilijk om onderscheid te maken tussen grote en kleine degenen te produceren. Daarom is het beste om te beginnen met behulp van de tool op uw code zo vroeg in het project mogelijk te maken, en vervolgens aan te voeren op uw code zo vaak mogelijk, zodat je kunt omgaan met nieuwe waarschuwingen als ze komen.

Met continu gebruik als dit, je snel leren hoe u uw code te schrijven op een manier die bevestigt aan de door het hulpprogramma toegepaste regels.

Vanwege dit, ik heb liever tools zoals Lint die relatief snel lopen, en dus continu gebruik te stimuleren, in plaats van de meer omslachtige hulpmiddelen die u uiteindelijk met minder vaak, of helemaal niet.

antwoordde op 20/12/2008 om 00:29
bron van user

stemmen
1

Lint-achtige instrumenten in het algemeen lijden aan een "vals alarm" probleem: zij verslag veel meer problemen dan echt bestaan. Als het aandeel van de werkelijk bruikbare waarschuwingen te laag is, kan de gebruiker leert om alleen de functie negeren. Meer moderne hulpmiddelen besteden enige moeite om zich te concentreren op het meest waarschijnlijke / interessant waarschuwingen.

antwoordde op 23/08/2008 om 15:29
bron van user

stemmen
1

Misschien vindt u de Uno hulpmiddel nuttig. Het is een van de weinige gratis non-speelgoed opties. Het verschilt van pluizen, Flexelint, etc. te richten op een beperkt aantal "semantische" fouten (null pointer derefs, buiten de grenzen arrayindexen, en het gebruik van geïnitialiseerde variabelen). Het staat ook door de gebruiker gedefinieerde controles, zoals lock-unlock discipline.

Ik ben bezig aan een publieke release van een opvolger tool, Orion ( CONTENT niet meer beschikbaar )

antwoordde op 15/08/2008 om 23:39
bron van user

stemmen
0

Schaars is een computer software tool, al beschikbaar op Linux, ontworpen om mogelijke codering fouten in de Linux-kernel te vinden.

Er zijn twee actieve projecten van Linux Verification Center gericht om de kwaliteit van de laadbare kernel modules te verbeteren.

  1. Linux Driver Verification (LDV) - een uitgebreide toolset voor statische broncode verificatie van Linux device drivers.
  2. KEDR Framework - een uitbreidbaar raamwerk voor dynamische analyse en verificatie van kernel modules.
  3. Een ander lopend project is Linux File System Verification dat zich richt op een specifieke toolset te ontwikkelen voor de verificatie van Linux file systeem implementaties.
antwoordde op 20/12/2012 om 08:36
bron van user

stemmen
0

Ik heb ontdekt dat het algemeen het beste om meerdere statische analyse-instrumenten te gebruiken om bugs gevonden. Elke tool is anders ontworpen, en ze kunnen heel verschillende dingen van elkaar te vinden.

Er zijn een aantal goede discussies in een aantal van de gesprekken hier . Het is van een conferentie gehouden door het Amerikaanse Department of Homeland Security op statische analyse.

antwoordde op 15/06/2011 om 07:53
bron van user

stemmen
0

g'day,

Ik ben het volledig eens met de voorstellen om te lezen en te verteren wat de compiler vertelt u na het instellen van -Wall.

Een goede statische analyse tool voor de veiligheid wordt flawfinder geschreven door David Wheeler. Het maakt een goede baan op zoek naar diverse security exploits,

Dit betekent echter niet ter vervanging van het hebben van een goed geïnformeerd iemand lezen via uw code. Zoals David zegt op zijn website: "Een dwaas met een tool is nog steeds een dwaas!"

cheers,

Beroven

antwoordde op 26/08/2008 om 16:21
bron van user

stemmen
0

lint wordt voortdurend bijgewerkt ... dus waarom zou je willen een meer recente.

BTW flexelint is pluizen

antwoordde op 23/08/2008 om 12:42
bron van user

stemmen
0

Er is een "-Weffc ++" optie voor gcc die volgens de Mac OS X-man-pagina zal:

Waarschuwen voor overtredingen van de volgende richtlijnen stijl van Scott Meyers' Effectieve C ++ boek:

[knip]

Ik weet dat je vroeg naar C, maar dit is het beste wat ik weet van ..

antwoordde op 15/08/2008 om 23:03
bron van user

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