/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
statisk analyse værktøj til c++
Fra : news.tele.dk


Dato : 02-11-06 18:57

Hej gruppe



Jeg leder efter et værktøj til Windows der kan lave statisk analyse af C++
kode. Programmet skal være gratis at bruge i kommercielt øjemed. Dvs. i et
firma. Derudover er det et plus men intet krav hvis det kan integreres med
Visual Studio 2005. Findes der et eller flere værktøjer der opfylder disse
krav og i hvad kan i så fald anbefales?



Hvis der ikke findes gratis værktøjer til statisk analyse af C++, hvilke
kommercielle værktøjer kan så evt. være en mulighed at kigge på?



 
 
Mogens Hansen (02-11-2006)
Kommentar
Fra : Mogens Hansen


Dato : 02-11-06 20:04


"news.tele.dk" <no_spam@for.me> wrote in message
news:454a3161$0$20272$edfadb0f@dread16.news.tele.dk...
> Hej gruppe
>
>
>
> Jeg leder efter et værktøj til Windows der kan lave statisk analyse af C++
> kode. Programmet skal være gratis at bruge i kommercielt øjemed. Dvs. i et
> firma. Derudover er det et plus men intet krav hvis det kan integreres med
> Visual Studio 2005. Findes der et eller flere værktøjer der opfylder disse
> krav og i hvad kan i så fald anbefales?
>
>
>
> Hvis der ikke findes gratis værktøjer til statisk analyse af C++, hvilke
> kommercielle værktøjer kan så evt. være en mulighed at kigge på?

Hvad vil du gerne have ud af analysen ?

Er det f.eks. generering af dokumentation som Doxygen, mulige fejl som Lint,
overholdelse af kodningstandarder ?

Venlig hilsen

Mogens Hansen



news.tele.dk (02-11-2006)
Kommentar
Fra : news.tele.dk


Dato : 02-11-06 20:12

Hej igen

Det skal være et Lint værktøj. Altså et værtøj der er i stand til at lave
"warnings" når den fanger ting som normale compiler ignorere. Det kunne jo
fx. være ting som brug af unititaliserede variabler eller include af header
filer der ikke bruges i modulet osv. Men nej det skal IKKE være et Doxygen
værtøj (det bruges allerede).

mvh. Mikael

"Mogens Hansen" <mogens_h@dk-online.dk> wrote in message
news:454a412c$0$177$157c6196@dreader1.cybercity.dk...
>
> "news.tele.dk" <no_spam@for.me> wrote in message
> news:454a3161$0$20272$edfadb0f@dread16.news.tele.dk...
>> Hej gruppe
>>
>>
>>
>> Jeg leder efter et værktøj til Windows der kan lave statisk analyse af
>> C++ kode. Programmet skal være gratis at bruge i kommercielt øjemed. Dvs.
>> i et firma. Derudover er det et plus men intet krav hvis det kan
>> integreres med Visual Studio 2005. Findes der et eller flere værktøjer
>> der opfylder disse krav og i hvad kan i så fald anbefales?
>>
>>
>>
>> Hvis der ikke findes gratis værktøjer til statisk analyse af C++, hvilke
>> kommercielle værktøjer kan så evt. være en mulighed at kigge på?
>
> Hvad vil du gerne have ud af analysen ?
>
> Er det f.eks. generering af dokumentation som Doxygen, mulige fejl som
> Lint, overholdelse af kodningstandarder ?
>
> Venlig hilsen
>
> Mogens Hansen
>



Mogens Hansen (02-11-2006)
Kommentar
Fra : Mogens Hansen


Dato : 02-11-06 20:43


"news.tele.dk" <no_spam@for.me> wrote in message
news:454a430b$0$20296$edfadb0f@dread16.news.tele.dk...
> Hej igen
>
> Det skal være et Lint værktøj. Altså et værtøj der er i stand til at lave
> "warnings" når den fanger ting som normale compiler ignorere. Det kunne jo
> fx. være ting som brug af unititaliserede variabler eller include af
> header filer der ikke bruges i modulet osv.

Jeg kender ikke umiddelbart nogle gratis, men
Programming Research QA C++ http://www.programmingresearch.com
Gimpel Lint for C/C++ http://www.gimpel.com/
Parasoft CodeWizard
http://www.parasoft.com/jsp/products/home.jsp?product=Wizard&
er nogle muligheder

Venlig hilsen

Mogens Hansen



Kent Friis (02-11-2006)
Kommentar
Fra : Kent Friis


Dato : 02-11-06 21:50

Den Thu, 2 Nov 2006 20:12:01 +0100 skrev news.tele.dk:
> Hej igen
>
> Det skal være et Lint værktøj. Altså et værtøj der er i stand til at lave
> "warnings" når den fanger ting som normale compiler ignorere. Det kunne jo
> fx. være ting som brug af unititaliserede variabler

Dårligt eksempel, brug af uinitaliserede variable kan enhver ordentlig
compiler advare om.

Mvh
Kent
--
"So there I was surrounded by all these scary creatures
They were even scarier than what Microsoft call features"
- C64Mafia: Forbidden Forest (Don't Go Walking Slow).

Simon Fristed Eskild~ (03-11-2006)
Kommentar
Fra : Simon Fristed Eskild~


Dato : 03-11-06 04:26

Kent Friis wrote:
> Den Thu, 2 Nov 2006 20:12:01 +0100 skrev news.tele.dk:
>> Hej igen
>>
>> Det skal være et Lint værktøj. Altså et værtøj der er i stand til at lave
>> "warnings" når den fanger ting som normale compiler ignorere. Det kunne jo
>> fx. være ting som brug af unititaliserede variabler
>
> DÃ¥rligt eksempel, brug af uinitaliserede variable kan enhver ordentlig
> compiler advare om.

I så fald er gcc ikke en ordentlig compiler, medmindre jeg har overset
noget.
Tag f.eks. flg:

typedef struct
{
int bar;
}foo;

int main(int argc, char* argv[]){
foo a,*ptr;
int b,c;

b = a.bar;
ptr = malloc(10*sizeof(foo));
if (ptr[0].bar)
return c;
free(ptr);
return b;
}

gcc -g -Wall -O3 -o test test.c
test.c: In function ‘main’:
test.c:17: warning: ‘c’ is used uninitialized in this function
test.c:9: warning: ‘a.bar’ may be used uninitialized in this function

gcc advarer godt nok om 'c' og 'a.bar', men ikke om ptr[0].bar, som
bliver brugt uinitialiseret.
Kører man derimod valgrind på overnstående:

valgrind --leak-check=yes ./test
--snip--
==3854== Conditional jump or move depends on uninitialised value(s)
==3854== at 0x80483E6: main (test.c:16)
==3854==
==3854== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 12 from 1)
==3854== malloc/free: in use at exit: 0 bytes in 0 blocks.
==3854== malloc/free: 1 allocs, 1 frees, 40 bytes allocated.
==3854== For counts of detected errors, rerun with: -v
==3854== No malloc'd blocks -- no leaks are possible.

får man en advarsel. Jeg tror det er denne slags fejl Mikael mener når
han skriver "uinitialiseret". De er rare at finde (og rette)

Mvh
Simon

Kent Friis (04-11-2006)
Kommentar
Fra : Kent Friis


Dato : 04-11-06 21:15

Den Thu, 02 Nov 2006 22:26:28 -0500 skrev Simon Fristed Eskildsen:
> Kent Friis wrote:
>> Den Thu, 2 Nov 2006 20:12:01 +0100 skrev news.tele.dk:
>>> Hej igen
>>>
>>> Det skal være et Lint værktøj. Altså et værtøj der er i stand til at lave
>>> "warnings" når den fanger ting som normale compiler ignorere. Det kunne jo
>>> fx. være ting som brug af unititaliserede variabler
>>
>> Dårligt eksempel, brug af uinitaliserede variable kan enhver ordentlig
>> compiler advare om.
>
> I så fald er gcc ikke en ordentlig compiler, medmindre jeg har overset
> noget.

Så som at variablen ptr faktisk *er* initialiseret. Det er det den
peger på der ikke er initialiseret. Big difference.

> foo a,*ptr;
> ptr = malloc(10*sizeof(foo));
>
> gcc advarer godt nok om 'c' og 'a.bar', men ikke om ptr[0].bar, som
> bliver brugt uinitialiseret.
> Kører man derimod valgrind på overnstående:

Der er mig bekendt ikke meget statisk check over valgrind.

> får man en advarsel. Jeg tror det er denne slags fejl Mikael mener når
> han skriver "uinitialiseret". De er rare at finde (og rette)

Jeg går til gengæld ud fra at han mener variable når han skriver
variabler.

Mvh
Kent
--
"So there I was surrounded by all these scary creatures
They were even scarier than what Microsoft call features"
- C64Mafia: Forbidden Forest (Don't Go Walking Slow).

Simon Fristed Eskild~ (06-11-2006)
Kommentar
Fra : Simon Fristed Eskild~


Dato : 06-11-06 15:28

Kent Friis wrote:
> Så som at variablen ptr faktisk *er* initialiseret. Det er det den
> peger på der ikke er initialiseret. Big difference.
Netop...ofte en årsag til semantiske fejl, hvilke en compiler selv sagt
ikke kan fange.

> Der er mig bekendt ikke meget statisk check over valgrind.
Touché! Jeg overså lige "statisk" i Mikaels indlæg. Det må skyldes
mangel på kaffe
Jeg gi'r dig ret. *Statisk* check af uinitialiserede variable kan enhver
ordentlig compiler advare om.

Mvh
Simon

Mogens Hansen (03-11-2006)
Kommentar
Fra : Mogens Hansen


Dato : 03-11-06 06:59


"news.tele.dk" <no_spam@for.me> wrote in message
news:454a430b$0$20296$edfadb0f@dread16.news.tele.dk...
> Hej igen
>
> Det skal være et Lint værktøj. Altså et værtøj der er i stand til at lave
> "warnings" når den fanger ting som normale compiler ignorere. Det kunne jo
> fx. være ting som brug af unititaliserede variabler eller include af
> header filer der ikke bruges i modulet osv.

Hvad med dynamiske analysatorer som Purify eller BoundersChecker ?

Iøvrigt har Microsoft Visual Studo .NET 2005 Team Edition for Software
Developers indeholder både en statisk og dynamisk analysator, som jeg dog
ikke har prøvet.
http://msdn.microsoft.com/vstudio/teamsystem/products/compare/default.aspx

Venlig hilsen

Mogens Hansen



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste