Velge et statisk kode analyseverktøy

stemmer
54

Jeg jobber med et prosjekt hvor jeg koding i C i et UNIX-miljø. Jeg har brukt lo verktøy for å sjekke min kildekoden. Lint har eksistert i lang tid (siden 1979), kan noen foreslå en nyere kodeanalyse verktøy jeg kan bruke? Fortrinnsvis et verktøy som er fri.

Publisert på 05/08/2008 klokken 21:19
kilden bruker
På andre språk...                            


15 svar

stemmer
30

Ikke overse kompilatoren selv.

Les kompilatoren dokumentasjon og finn alle advarsler og feil det kan gi, og deretter aktivere så mange som fornuftig for deg.

Pass også på å fortelle kompilatoren å behandle advarsler som feil så du er nødt til å fikse dem med en gang. ( "-Werror" på gcc)

Også: "-Wall" på gcc betyr ikke aktivere alle advarsler, ikke la deg lure.

Også også: Sjekk ut Valgrind - det "automatisk oppdage [s] mange minnehåndtering og tråder bugs, og profil [s] programmene i detalj." (Gratis!)

Valgrind er ikke en statisk kontrolløren, men det er et flott verktøy! http://valgrind.org

Svarte 05/08/2008 kl. 22:17
kilden bruker

stemmer
14

For C-kode, du definitivt bør definitivt bruke Flexelint . Jeg brukte den for nesten 15 år, og sverger til det. En av de virkelig store funksjonene den har, er at advarsler kan selektivt slås av og på via kommentarer i koden ( "/ * lint -e123 * /"). Dette viste seg å være et kraftig dokumentasjonsverktøy når du ønsket å noe utenom det vanlige. "Jeg slår av varsel X, derfor er det noen god grunn jeg gjør X."

For noen inn interessante C / C ++ spørsmål, se på noen av sine eksempler på nettstedet deres og se om du kan finne ut feilene uten å se på tips.

Svarte 05/08/2008 kl. 21:42
kilden bruker

stemmer
12

Jeg har hørt gode ting om klang statisk analysator , som IIRC bruker LLVM som det er backend. Hvis det er implementert på din plattform, som kan være et godt valg.

Fra hva jeg forstår, gjør det litt mer enn bare syntaks analyse. "Automatisk Bug Finne", for eksempel.

Svarte 06/08/2008 kl. 00:40
kilden bruker

stemmer
5

Du kan bruke cppcheck . Det er en lett å bruke statisk kodeanalyseverktøyet.
For eksempel:
cppcheck --enable=all .
vil sjekke alle C / C ++ filer under gjeldende mappe.

Svarte 25/06/2015 kl. 15:54
kilden bruker

stemmer
5

Jeg har nylig utarbeidet en liste over alle statiske verktøy analyse jeg hadde til min disposisjon, er jeg fortsatt i ferd med å vurdere dem alle. Merk, dette er stort sett verktøy Security Analysis.

Svarte 03/09/2008 kl. 22:11
kilden bruker

stemmer
5

Vi har brukt Coverity Forhindre å sjekke ut C ++ kildekode.

Det er ikke et gratis verktøy (selv om jeg tror de tilbyr gratis skanning for åpen kildekode-prosjekter), men det er en av de beste verktøyene statisk analyse du finner. Jeg har hørt det er enda mer imponerende på C enn på C ++, men det har hjulpet oss å unngå ganske mange bugs så langt.

Svarte 15/08/2008 kl. 17:47
kilden bruker

stemmer
1

Du kan prøve CppDepend , en ganske komplett statisk analysator tilgjengelig på Windows og Linux, trodde VS Plugin, IDE eller kommandolinjen, og det er gratis for åpen kildekode bidragsytere

Svarte 26/06/2015 kl. 12:01
kilden bruker

stemmer
1

PC-lint / Flexelint er veldig kraftig og nyttig verktøy for statisk analyse, og svært konfigurerbar, men dessverre ikke gratis.

Når først bruke et verktøy som dette, kan de produsere et stort antall advarsler, som kan gjøre det vanskelig å skille mellom store og små seg. Derfor er det best å begynne å bruke verktøyet på koden din så tidlig i prosjektet som mulig, og deretter kjøre den på koden din så ofte som mulig, slik at du kan håndtere nye advarsler som de kommer opp.

Med kontinuerlig bruk som dette, du snart lære å skrive koden på en måte som bekrefter reglene anvendes av verktøyet.

På grunn av dette, jeg foretrekker verktøy som Lint som går relativt raskt, og så oppmuntre kontinuerlig bruk, heller enn de mer tungvint verktøy som du kan ende opp med å bruke mindre ofte, om i det hele tatt.

Svarte 19/12/2008 kl. 23:29
kilden bruker

stemmer
1

Lo-lignende verktøy generelt lider av en "falsk alarm" problem: de rapporterer mye mer problemer enn virkelig eksisterer. Dersom andelen av genuint-nyttige advarsler er for lav, lærer brukeren å bare ignorere verktøyet. Mer moderne verktøy bruke litt krefter på å fokusere på de mest sannsynlige / interessante advarsler.

Svarte 23/08/2008 kl. 14:29
kilden bruker

stemmer
1

Du kan finne Uno verktøy nyttig. Det er en av de få gratis ikke-leketøy alternativer. Den skiller seg fra lo, Flexelint, etc. ved å fokusere på et lite antall av "semantiske" feil (som null peker derefs, ut-av-grenser arrayindekser, og bruk av uinitialiserte variable). Den gjør det også brukerdefinerte sjekker, som lock-unlock disiplin.

Jeg jobber mot en offentlig utgivelse av en etterfølger verktøy, Orion ( INNHOLD ikke lenger tilgjengelig )

Svarte 15/08/2008 kl. 22:39
kilden bruker

stemmer
0

Sparsom er et dataprogram verktøy, som allerede er tilgjengelig på Linux, designet for å finne mulige koding feil i Linux-kjernen.

Det er to aktive prosjekter av Linux Verifisering Senter som mål å forbedre kvaliteten på lastbare kjernemoduler.

  1. Linux Driver Verification (LDV) - en omfattende verktøysett for statisk kildekode verifisering av drivere Linux enhets.
  2. KEDR ramme - et utvidbart rammeverk for dynamisk analyse og verifisering av kjernemoduler.
  3. Et annet pågående prosjekt er Linux File System Verification som mål å utvikle en egen verktøysett for verifisering av Linux-filsystem implementeringer.
Svarte 20/12/2012 kl. 07:36
kilden bruker

stemmer
0

Jeg har funnet ut at det er vanligvis best å bruke flere verktøy for statisk analyse for å finne feil. Hver verktøyet er utformet annerledes, og de kan finne svært forskjellige ting fra hverandre.

Det er noen gode diskusjoner i noen av samtalene her . Det er fra en konferanse holdt av US Department of Homeland Security på statisk analyse.

Svarte 15/06/2011 kl. 06:53
kilden bruker

stemmer
0

G'day,

Jeg er helt enig med forslagene å lese og fordøye hva kompilatoren er å fortelle deg etter innstilling -Wall.

En god statisk analyse verktøy for sikkerhet FlawFinder skrevet av David Wheeler. Det gjør en god jobb på jakt etter ulike utnyttelser av sikkerhetshull,

Men det betyr ikke erstatte ha en kunnskapsrike noen lese gjennom koden din. Som David sier på sin nettside: "En dåre med et verktøy er fortsatt en tosk!"

jubel,

Rane

Svarte 26/08/2008 kl. 15:21
kilden bruker

stemmer
0

lo er kontinuerlig oppdatert ... så hvorfor skulle du ønske en nyere en.

BTW flexelint er lint

Svarte 23/08/2008 kl. 11:42
kilden bruker

stemmer
0

Det er en "-Weffc ++" alternativ for gcc som i henhold til Mac OS X mannen siden vil:

Varsle om brudd på følgende stil retningslinjer fra Scott Meyers' Effektiv C ++ bok:

[Snip]

Jeg vet at du spurte om C, men dette er det nærmeste jeg vet om ..

Svarte 15/08/2008 kl. 22:03
kilden bruker

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