Dela via


Snabbstart: Kodanalys för C/C++

Du kan förbättra programmets kvalitet genom att köra kodanalys regelbundet på C- eller C++-kod. Kodanalys kan hjälpa dig att hitta vanliga problem och överträdelser av god programmeringspraxis. Och den hittar defekter som är svåra att upptäcka genom testning. Varningarna skiljer sig från kompilatorfel och varningar: Den söker efter specifika kodmönster som är kända för att orsaka problem. Det vill: kod som är giltig, men som fortfarande kan skapa problem, antingen för dig eller för andra personer som använder din kod.

Konfigurera regeluppsättningar för ett projekt

  1. I Solution Explorer öppnar du snabbmenyn för projektnamnet och väljer sedan Egenskaper.

  2. Du kan också välja byggkonfiguration och målplattform i listorna Konfiguration och plattform .

  3. Om du vill köra kodanalys varje gång projektet skapas med den valda konfigurationen markerar du kryssrutan Aktivera kodanalys på build . Du kan också köra kodanalys manuellt genom att öppna menyn Analysera och sedan välja Kör kodanalys påProjectName eller Kör kodanalys på fil.

  4. Välj den regeluppsättning som du vill använda eller skapa en anpassad regeluppsättning. Om du använder LLVM/clang-cl, se använda Clang-Tidy i Visual Studio för att konfigurera analysalternativ för Clang-Tidy.

Standard-C/C++-regeluppsättningar

Visual Studio innehåller dessa standarduppsättningar med regler för intern kod:

Regeluppsättning Beskrivning
C++ Kärnkontroll aritmetiska regler Dessa regler framtvingar kontroller relaterade till aritmetiska åtgärder från C++ Core Guidelines.
Regler för granskning av gränser i C++ kärna Dessa regler tillämpar gränsprofilen för C++ Core Guidelines.
C++ Kärnkontrollklassregler Dessa regler framtvingar kontroller relaterade till klasser från C++ Core Guidelines.
C++ Core Check Konkurensregler Dessa regler framtvingar kontroller relaterade till samtidighet från C++ Core Guidelines.
C++ Core Check Const Rules Dessa regler tvingar igenom const-relaterade kontroller från C++ Core Guidelines.
C++ Grundläggande kontrolldeklarationsregler Dessa regler framtvingar kontroller relaterade till deklarationer från C++ Core Guidelines.
C++ Core Check Enum-regler Dessa regler tillämpar uppräkningsrelaterade kontroller från C++ Core Guidelines.
Experimentella regler för C++ Core Check Dessa regler samlar in några experimentella kontroller. Slutligen förväntar vi oss att dessa kontroller flyttas till andra regeluppsättningar eller tas bort helt.
Funktionsregler för C++ Core Check Dessa regler framtvingar kontroller relaterade till funktioner från C++ Core Guidelines.
C++ Core Check GSL-regler Dessa regler svarar mot kontroller relaterade till Guidelines Support Library från C++ Core Guidelines.
Livslängdsregler för C++ Kärnkontroll Dessa regler tillämpar livslängdsprofilen för C++ Core Guidelines.
C++ Core Check Owner Pointer Rules Dessa regler tillämpar resurshanteringskontroller som är relaterade till owner<T> från C++ Core Guidelines.
C++ Core Check Raw Pointer Rules (Regler för grundkontroll av råpekare i C++) Dessa regler tillämpar resurshanteringskontroller relaterade till rådata från C++ Core Guidelines.
C++ Kärnkontrollregler Dessa regler framtvingar en delmängd av kontrollerna från C++ Core Guidelines. Använd den här regeluppsättningen om du vill inkludera alla C++ Core Check-regler förutom reglerna Uppräkning och Experiment.
C++ Kärnkontrollregler för shared pointer Dessa regler tillämpar resurshanteringskontroller relaterade till typer med delad pekare semantik från C++ Core Guidelines.
C++ Core Check STL Rules Dessa regler framtvingar kontroller relaterade till C++-standardbiblioteket från C++ Core Guidelines.
C++ Kärnkontrollformatregler Dessa regler tillämpar kontroller som rör användning av uttryck och instruktioner från C++ Core Guidelines.
C++ Core Check Type Rules Dessa regler tillämpar typprofilen för C++ Core Guidelines.
C++ Kärnkontrollregler för unika pekare Dessa regler tillämpar resurshanteringskontroller relaterade till typer med unika pekarsemantik från C++ Core Guidelines.
Regler för samtidighetskontroll Dessa regler tillämpar en uppsättning win32-samtidighetsmönsterkontroller i C++.
Konsekvensregler Lägger till samtidighetsregler från C++ Core Guidelines till Regler för samtidighetskontroll.
Microsofts interna minimiregler Dessa regler fokuserar på de mest kritiska problemen i din interna kod, inklusive potentiella säkerhetshål och programkrascher. Vi rekommenderar att du inkluderar den här regeluppsättningen i alla anpassade regeluppsättningar som du skapar för dina interna projekt.
Microsofts interna rekommenderade regler Dessa regler fokuserar på de mest kritiska och vanliga problemen i din interna kod. Dessa problem omfattar potentiella säkerhetshål och programkrascher. Vi rekommenderar att du inkluderar den här regeluppsättningen i alla anpassade regeluppsättningar som du skapar för dina interna projekt. Den här regeluppsättningen är utformad för att fungera med Visual Studio Professional-utgåvan och högre. Den innehåller alla regler i Microsofts interna minimiregler.

Visual Studio innehåller dessa standarduppsättningar med regler för hanterad kod:

Regeluppsättning Beskrivning
Microsofts grundläggande korrekthetsregler Dessa regler fokuserar på logikfel och vanliga misstag vid användning av ramverks-API:er. Inkludera den här regeluppsättningen för att expandera listan över varningar som rapporterats av de minimalt rekommenderade reglerna.
Riktlinjer för Microsoft Basic-design De här reglerna fokuserar på att främja bästa praxis för att göra koden lätt att förstå och använda. Inkludera den här regeluppsättningen om ditt projekt innehåller bibliotekskod eller om du vill tillämpa metodtips för lätthanterlig kod.
Microsofts Utökade Korrekthetsregler Dessa regler utökar de grundläggande korrekthetsreglerna för att maximera de rapporterade logik- och ramverksanvändningsfelen. Extra vikt läggs vid specifika scenarier som COM-interop och mobila program. Överväg att inkludera den här regeluppsättningen om något av dessa scenarier gäller för projektet eller för att hitta fler problem i projektet.
Microsoft Utökade Designriktlinjer Regler Dessa regler utökar de grundläggande designriktlinjerna för att maximera rapporterade problem med användbarhet och underhåll. Extra vikt läggs vid namngivningsriktlinjer. Överväg att inkludera den här regeluppsättningen om ditt projekt innehåller bibliotekskod eller om du vill tillämpa de högsta standarderna för att skriva underhållsbar kod.
Microsofts globaliseringsregler Dessa regler fokuserar på problem som förhindrar att data i ditt program visas korrekt när de används på olika språk, nationella inställningar och kulturer. Inkludera den här regeluppsättningen om ditt program är lokaliserat och/eller globaliserat.
Microsofts hanterade minimiregler Dessa regler fokuserar på de mest kritiska problemen i koden som kodanalys är mest exakt för. Dessa regler är små i antal och de är endast avsedda att köras i begränsade Visual Studio-utgåvor. Använd MinimumRecommendedRules.ruleset med andra Visual Studio-utgåvor.
Microsoft Hanterade Rekommenderade Regler De här reglerna fokuserar på de mest kritiska problemen i koden. Dessa problem omfattar potentiella säkerhetshål, programkrascher och andra viktiga logik- och designfel. Vi rekommenderar att du inkluderar den här regeluppsättningen i alla anpassade regeluppsättningar som du skapar för dina projekt.
Lägsta regler för Microsoft Mixed (C++ /CLR) De här reglerna fokuserar på de mest kritiska problemen i dina C++-projekt som stöder Common Language Runtime. Dessa problem omfattar potentiella säkerhetshål, programkrascher och andra viktiga logik- och designfel. Vi rekommenderar att du inkluderar den här regeluppsättningen i alla anpassade regeluppsättningar som du skapar för dina C++-projekt som stöder Common Language Runtime.
Rekommenderade regler för Microsoft Mixed (C++ /CLR) De här reglerna fokuserar på de vanligaste och viktigaste problemen i dina C++-projekt som stöder Common Language Runtime. Dessa problem omfattar potentiella säkerhetshål, programkrascher och andra viktiga logik- och designfel. Den här regeluppsättningen är utformad för användning i Visual Studio Professional-utgåvan och högre.
Microsofts säkerhetsregler Den här regeluppsättningen innehåller alla Microsoft-säkerhetsregler. Inkludera den här regeln för att maximera antalet potentiella säkerhetsproblem som rapporteras.

Så här inkluderar du varje regel:

Regeluppsättning Beskrivning
Microsoft Samtliga Regler Den här regeluppsättningen innehåller alla regler. Om du kör den här regeluppsättningen kan det leda till att ett stort antal varningar rapporteras. Använd den här regeluppsättningen för att få en omfattande bild av alla problem i koden. Det kan hjälpa dig att avgöra vilka av de mer fokuserade regeluppsättningarna som är lämpligast att köra för dina projekt.

Köra kodanalys

På sidan Kodanalys i dialogrutan Projektegenskaper kan du konfigurera kodanalys så att den körs varje gång du skapar projektet. Du kan också köra kodanalys manuellt.

Så här kör du kodanalys på en lösning:

  • I menyn Skapa väljer du Kör kodanalys på lösning.

Så här kör du kodanalys i ett projekt:

  1. I Solution Explorer väljer du namnet på projektet.

  2. På menyn Skapa väljer du Kör kodanalys påProjektnamn.

Så här kör du kodanalys på en fil:

  1. I Solution Explorer väljer du namnet på filen.

  2. I menyn Skapa väljer du Kör kodanalys på fil eller trycker på Ctrl+Skift+Alt+F7.

    Projektet eller lösningen kompileras och kodanalys körs. Resultaten visas i fönstret Felrapport.

Analysera och lösa kodanalysvarningar

I fönstret Fellista visas de kodanalysvarningar som hittades. Resultatet visas i en tabell. Om det finns mer information om en viss varning innehåller den första kolumnen en expansionskontroll. Välj den för att expandera visningen för ytterligare information om problemet. När det är möjligt visar kodanalys de radnummer och analyslogik som ledde till varningen.

Om du vill ha detaljerad information om varningen, inklusive möjliga lösningar på problemet, väljer du varnings-ID:t i kolumnen Kod för att visa motsvarande onlinehjälpartikel.

Dubbelklicka på en varning för att flytta markören till den kodrad som orsakade varningen i kodredigeraren. Eller tryck på Retur på den valda varningen.

När du har förstått problemet kan du lösa det i koden. Kör sedan kodanalysen igen för att se till att varningen inte längre visas i fellistan.

Skapa arbetsobjekt för kodanalysvarningar

Du kan använda funktionen för spårning av arbetsobjekt för att logga buggar från Visual Studio. Om du vill använda den här funktionen måste du ansluta till en instans av Azure DevOps Server (tidigare Team Foundation Server).

Skapa ett arbetsobjekt för en eller flera C/C++-kodvarningar

  1. I fellistan expanderar och väljer du varningarna

  2. På snabbmenyn för varningarna väljer du Skapa arbetsobjekt och väljer sedan typ av arbetsobjekt.

  3. Visual Studio skapar ett enda arbetsobjekt för de markerade varningarna och visar arbetsobjektet i ett dokumentfönster i IDE:n.

  4. Lägg till ytterligare information och välj sedan Spara arbetsobjekt.

Resultat av sök- och filterkodanalys

Du kan söka i långa listor med varningsmeddelanden och du kan filtrera varningar i lösningar för flera projekt.

  • Så här filtrerar du varningar efter rubrik eller varnings-ID: Ange nyckelordet i rutan Sökfellista.

  • Så här filtrerar du varningar efter allvarlighetsgrad: Som standard tilldelas kodanalysmeddelanden allvarlighetsgraden Varning. Du kan tilldela allvarlighetsgraden för ett eller flera meddelanden som Fel i en anpassad regeluppsättning. I kolumnen Allvarlighetsgrad i fellistan väljer du listrutepilen och sedan filterikonen. Välj Varning eller Fel om du bara vill visa de meddelanden som har tilldelats respektive allvarlighetsgrad. Välj Välj alla om du vill visa alla meddelanden.

Se även