Dela via


Så här kör du kodanalys för drivrutiner

Kodanalys för drivrutiner innehåller information om möjliga fel i källkoden. Du kan köra kodanalys manuellt och du kan också köra kodanalys automatiskt med varje version.

I det här avsnittet:

Viktigt!

Kodanalys för drivrutiner finns tillgänglig i Windows 24H2 WDK och EWDK, men observera att den är planerad att avvecklas vid ett framtida datum.
Framöver är CodeQL det primära statiska analysverktyget för drivrutiner. CodeQL tillhandahåller ett kraftfullt frågespråk som behandlar kod som en databas som ska frågas, vilket gör det enkelt att skriva frågor för specifika beteenden, mönster med mera. För mer information om hur du använder CodeQL, se CodeQL och logotestet för verktyg för statisk analys.

Utföra kodanalys

Så här kör du kodanalys på drivrutins källkoden manuellt

  1. I Visual Studio väljer du drivrutinsprojektets fil eller lösning och väljer den projektkonfiguration och plattform som ska analyseras.
  2. På menyn Analysera eller Skapa klickar du på Kör kodanalys på lösning.

Så här kör du kodanalys på drivrutins källkod automatiskt med varje version

  1. Högerklicka på drivrutinsprojektet eller lösningen i Solution Explorer i Visual Studio och klicka på Egenskaper.
  2. I dialogrutan Egenskaper för projektet klickar du på Kodanalys.
  3. På sidan Kodanalys för C/C++-egenskaper väljer du den projektkonfiguration och plattform som du vill analysera (till exempel Windows 8 och Win32).
  4. Välj Aktivera kodanalys för C/C++ på Build.
  5. Under Regeluppsättning väljer du Rekommenderade regler för Microsoft-drivrutin. Det här är standardregeluppsättningen för drivrutiner.
  6. I menyn Skapa klickar du på Skapa lösning.

Visa resultatet av kodanalysen

Om möjliga fel hittas i källkoden visar fönstret Kodanalysresultat varningsnumret för kodanalys och radnumret i källfilen där felet inträffar.

Så här visar du defekter

  1. I fönstret Resultat av kodanalys klickar du på radnumret och en beskrivning av defekten visas i fönstret Kodanalysresultat .

    Fönstret Kod visar källkoden och anger var felet inträffar.

  2. Om du vill veta mer om en viss varning klickar du på Varning i fönstret Kodanalysresultat .

Visa kodanalysloggfilen som är associerad med en kompilering

  1. Navigera till katalogen för din byggkonfiguration och plattform (till exempel \\Windows7Release\\x64).
  2. Om du använder de rekommenderade reglerna kallas vc.\*codeanalysis.xmlloggfilen . Om du skapar en drivrutin för Windows Server 2012 används den här filen för att skapa drivrutinsverifieringsloggen.

Undertrycka rapporten om defekter

I vissa fall kanske du vill utelämna rapporten för ett visst varningsmeddelande. Om varningen till exempel främst är informationsbaserad och du vet orsaken till felet.

För att undertrycka varningsmeddelanden

  1. Om du vill ta bort en instans av en rapporterad defekt väljer du radnumret och varningen i fönstret Kodanalysresultat .

  2. I den utökade beskrivningen av varningen klickar du på Åtgärder>Utelämna meddelande>i källan.

    Ett pragma warning-direktiv med suppress-specifikatorn undertrycker endast varningen för den kodrad som följer efter #pragma warning-uttalande.

    #pragma warning(suppress: 6014)
    

Ändra stackanvändningsgränser för varning C6262 för drivrutiner i kernelläge

I användarläge och kärnlägeskod är stackutrymmet begränsat, och att misslyckas med att allokera en stacksida orsakar en stacköverflödsexception. Hög stackanvändning är särskilt ett problem i kernelläge eftersom det totala tillgängliga stackutrymmet bara är 12 KB. Kernel-lägeskod bör aggressivt begränsa stackanvändningen.

Kodanalysverktyget utfärdar en varning om C6262 om mer än 1 kB stackutrymme används lokalt i en funktion. Om du vill undersöka funktioner som kan vara resursintensiva kan du anpassa eller sänka stacktröskelgränsen som används av C6262. Om du sänker tröskelvärdet för stacken kan kodanalysverktyget potentiellt hitta fler problem. Du kan sedan välja att åtgärda dessa stackanvändningsproblem. Du kan till exempel sänka tröskelvärdet till 400 byte för att se om andra funktioner använder resurser.

Anpassa stacksize-gränsen för C6262

  1. Öppna projektfilen för ditt kernel-mode-drivrutin (eller komponent) i Visual Studio (.vcxproj) i Anteckningar eller någon annan textredigerare.
  2. Lägg till en ny <ItemDefinitionGroup> för kompilatorn <ClCompile>.
  3. Lägg till elementet <PREfastAdditionalOptions> och ange stacksize<bytes>. Standardvärdet är stacksize1024.
     <ItemDefinitionGroup>
       <ClCompile>


      <!-- Change stack depth for C6262 from 1024 to 400 -->
      <PREfastAdditionalOptions>stacksize400</PREfastAdditionalOptions>

    </ClCompile>
  </ItemDefinitionGroup>
  1. Spara projektfilen. Starta Visual Studio, läs in det uppdaterade drivrutinsprojektet och kör kodanalys.

    Om du vill återgå till standardvärdet 1 KB ångrar du de ändringar du gjort i projektfilen eller ändrar stackstorleksvärdet till stacksize1024.

Kodanalys för förarvarningar