Cppcheck

Cppcheck
Sorts Statisk kodanalysator
Skrivet i C++
Operativ system Unix-liknande operativsystem
Första upplagan 8 maj 2007
senaste versionen
Licens GPLv3
Hemsida cppcheck.sourceforge.net

Cppcheck  är en statisk kodanalysator för C / C++-språket , designad för att hitta fel som inte upptäcks av kompilatorer. Huvudmålet med projektet är att minimera antalet falska positiva resultat vid felsökning [2] .

Analysatorn kan kontrollera icke-standardiserade kodsektioner, inklusive användning av kompilatortillägg , inline assembler , etc. [3]

Funktioner

Upptäcker olika typer av fel i program [4] .

Det låter dig också ladda ner och ansluta regler [5] och tillägg [6] från cppcheck-förråd. Anpassade regler för kontroller kan läggas till via reguljära uttryck [3] .

Det är möjligt att förfina den standard som den kontrollerade koden överensstämmer med. Följande standarder stöds: C89 , C99 , C11 , C++03 , C++11 , POSIX . Samtidigt kan du specificera flera standarder samtidigt (till exempel C11 och POSIX) [7] .

Utöver standarden kan du ange målplattformen för mer exakt feldetektering. Varje plattform definierar storlekar för basdatatyper och plattformsspecifika datatyper [3] . Bland de tillgängliga kan du ange ett UNIX-liknande operativsystem eller ett Windows -operativsystem med ett bitdjup på 32 eller 64 bitar [7] .

Funktioner av statisk analys

Innan statisk analys utförs omvandlas källkoden till en representation som lämpar sig för vidare analys. Programmet tar bort alla kommentarer, ersätter makron med deras definitioner, ersätter alla typomdefinieringar med ursprungliga datatyper och tar koden till en enda stil. Om värdena på variablerna är kända, istället för namnen på variablerna, ersätts deras värden. Variabelnamn läggs till deras unika identifierare inom programmet, vilket förenklar ytterligare analys av användningen av variabler. Den kan till exempel int a;ersättas med int a@1;om variabeln deklareras först i programmet. Andra kodförenklingar görs också för att underlätta analysen. Nästa steg är att kontrollera koden enligt reglerna som laddas in i programmet, som matchar koden med mönster av kritiska fel och stilfel. De enklaste reglerna kan baseras på användningen av reguljära uttryck [8] .

Eftersom det inte finns någon riktig exekvering av koden kan felmeddelandena som genereras av analysatorn faktiskt peka på korrekt skriven kod, vilket kallas falska positiva. Det finns också situationer när det hittade felet aldrig kan visa sig under kodexekvering.

Användning

Arbetet med Cppcheck sker från kommandoraden. Sedan version 1.33 är ett gränssnitt för flera plattformar skrivet i Qt [9] också tillgängligt .

För att analysera en eller flera källfiler räcker det att köra programmet cppcheck och skicka det vägarna till filerna som ska kontrolleras som argument. Om du anger en katalog istället för ett filnamn, kommer programmet rekursivt att gå igenom katalogen och analysera alla kompilerade filer i den [3] .

Ett exempel på att köra analys av flera filer och en katalog på UNIX-liknande operativsystem :

cppcheck test1.c test2.c relativ/sökväg/test3.c /absolute/sökväg/test4.c project/src/

Ett exempel på att kontrollera en fil

Betrakta ett exempel på ett C- program med ett fel på grund av vilket arrayindex och dess storlek är omvända. Fil test.c:

#include <stdlib.h> #include <stdio.h> int main () { tecken [ 255 ] ; s [ 255 ] = '\0' ; returnera EXIT_SUCCESS ; }

För att kontrollera en fil test.cför fel med Cppcheck, måste du utföra följande kommando:

cppcheck test.c

Efter att du har kört kommandot kommer ett felmeddelande utanför gränserna att visas när du kommer åt variabeln s:

[test.c:7]: (error) Array 's[255]' accessed at index 255 which is out of bounds.

Integration med utvecklingsverktyg

Stöder integration med olika utvecklingsverktyg [10] :

Se även

Anteckningar

  1. Cppcheck-2.9
  2. Cppcheck - Ett verktyg för statisk C/C++-kodanalys . cppcheck.sourceforge.net. Hämtad 21 januari 2016. Arkiverad från originalet 18 januari 2016.
  3. ↑ 1 2 3 4 Manual för Cppcheck version 1.75 . Hämtad 21 januari 2016. Arkiverad från originalet 5 mars 2016.
  4. cppcheck/Wiki/ListOfChecks . sourceforge.net. Hämtad 21 januari 2016. Arkiverad från originalet 26 december 2015.
  5. danmar/cppcheck-regler . GitHub. Hämtad 21 januari 2016. Arkiverad från originalet 24 december 2015.
  6. danmar/cppcheck - tillägg . GitHub. Hämtad 21 januari 2016. Arkiverad från originalet 24 december 2015.
  7. ↑ 1 2 Ubuntu Manpage: cppcheck - Verktyg för statisk C/C++ kodanalys . manpages.ubuntu.com. Hämtad 31 januari 2016. Arkiverad från originalet 25 april 2016.
  8. Daniel Marjamaki. Skriver Cppcheck-regler. Del 2 - Cppcheck-datarepresentationen  (engelska)  : webbplats. - 2010. Arkiverad 13 mars 2016.
  9. cppcheck / Nyheter: cppcheck-1.33 . sourceforge.net. Hämtad 8 mars 2016. Arkiverad från originalet 14 mars 2016.
  10. cppcheck/Wiki/Home . sourceforge.net. Datum för åtkomst: 21 januari 2016. Arkiverad från originalet den 27 december 2015.
  11. FAQ -  (eng.) . codex.com. Tillträdesdatum: 31 januari 2016. Arkiverad från originalet 31 januari 2016.
  12. CoderGears, https://www.codergears.com/home . CppDepend :: Uppnå högre C/C++-kodkvalitet . www.cppdepend.com. Datum för åtkomst: 31 januari 2016. Arkiverad från originalet den 17 februari 2016.
  13. Automatisk statisk kodanalys innan du laddar upp din kod . Omerez. Datum för åtkomst: 21 januari 2016. Arkiverad från originalet 21 januari 2016.

Länkar