Ausführen der Codeanalyse für Treiber

Die Codeanalyse für Treiber enthält Informationen zu möglichen Fehlern im Quellcode. Sie können die Codeanalyse manuell ausführen, und Sie können auch die Codeanalyse automatisch mit jedem Build ausführen.

In diesem Thema:

Ausführen der Codeanalyse

So führen Sie die Codeanalyse für den Treiberquellcode manuell aus

  1. Wählen Sie in Visual Studio die Treiberprojektdatei oder -projektmappe aus, und wählen Sie die zu analysierende Projektkonfiguration und Plattform aus.
  2. Klicken Sie im Menü Analysieren oder Erstellen auf Codeanalyse für Projektmappe ausführen.

So führen Sie die Codeanalyse für den Treiberquellcode automatisch mit jedem Build aus

  1. Klicken Sie in Visual Studio in Projektmappen-Explorer mit der rechten Maustaste auf das Treiberprojekt oder die Projektmappe, und klicken Sie auf Eigenschaften.
  2. Klicken Sie im Eigenschaftendialogfeld für das Projekt auf Codeanalyse.
  3. Wählen Sie auf der Seite Codeanalyse für C/C++-Eigenschaften die Projektkonfiguration und plattform aus, die Sie analysieren möchten (z. B. Windows 8 und Win32).
  4. Wählen Sie Codeanalyse für C/C++ im Build aktivieren aus.
  5. Wählen Sie unter Regelsatz die Option Microsoft Driver Recommended Rules aus. Dies ist der Standardregelsatz für Treiber.
  6. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

Anzeigen der Codeanalyseergebnisse

Wenn mögliche Fehler im Quellcode gefunden werden, werden im Fenster Ergebnisse der Codeanalyse die Codeanalysewarnungsnummer und die Zeilennummer in der Quelldatei angezeigt, in der der Fehler auftritt.

So zeigen Sie Mängel an

  1. Klicken Sie im Fenster Ergebnisse der Codeanalyse auf die Zeilennummer, und eine Beschreibung des Fehlers wird im Fenster Ergebnisse der Codeanalyse angezeigt.

    Im Fenster Code wird der Quellcode angezeigt, und es wird angegeben, wo der Fehler auftritt.

  2. Um mehr über eine bestimmte Warnung zu erfahren, klicken Sie im Fenster Ergebnisse der Codeanalyse auf Warnung.

So zeigen Sie die Codeanalyseprotokolldatei an, die einem Build zugeordnet ist

  1. Navigieren Sie zum Verzeichnis für Ihre Buildkonfiguration und -plattform (z. B \\Windows7Release\\x64. ).
  2. Wenn Sie die empfohlenen Regeln verwenden, heißt vc.\*codeanalysis.xmldie Protokolldatei . Wenn Sie einen Treiber für Windows Server 2012 erstellen, wird diese Datei zum Erstellen des Treiberüberprüfungsprotokolls verwendet.

Unterdrücken des Fehlerberichts

In einigen Fällen können Sie den Bericht einer bestimmten Warnmeldung unterdrücken. Beispielsweise, wenn die Warnung in erster Linie informal ist und Sie die Ursache des Fehlers kennen.

So unterdrücken Sie Warnmeldungen

  1. Um eine instance eines gemeldeten Fehlers zu entfernen, wählen Sie im Fenster Ergebnisse der Codeanalyse die Zeilennummer und die Warnung aus.

  2. Klicken Sie in der erweiterten Beschreibung der Warnung auf Aktionen>, die Meldung>in quelle unterdrücken.

    Eine Pragma-Warnungsdirektive mit dem Suppress-Spezifizierer unterdrückt die Warnung nur für die Codezeile, die unmittelbar auf die #pragma Warning-Anweisung folgt.

    #pragma warning(suppress: 6014)
    

Ändern der Stapelnutzungsgrenzwerte für die Warnung C6262 für Kernelmodustreiber

Im Benutzermodus- und Kernelmoduscode ist der Stapelspeicherplatz begrenzt, und ein Fehler beim Committen einer Stapelseite führt zu einer Stapelüberlaufausnahme. Eine hohe Stapelauslastung ist besonders im Kernelmodus ein Problem, da der gesamte verfügbare Stapelspeicher nur 12 KB beträgt. Kernelmoduscode sollte die Stapelnutzung aggressiv einschränken.

Das Codeanalysetool gibt die Warnung C6262 aus, wenn mehr als 1 KB Stapelspeicherplatz lokal in einer Funktion verwendet wird. Wenn Sie Funktionen untersuchen möchten, die möglicherweise ressourcenintensiv sind, können Sie den von C6262 verwendeten Stapelschwellenwert anpassen oder senken. Wenn Sie den Grenzwert für den Stapelschwellenwert senken, kann das Codeanalysetool möglicherweise weitere Probleme finden. Sie können dann auswählen, ob diese Stapelnutzungsprobleme behoben werden sollen. Sie können beispielsweise den Schwellenwert auf 400 Byte senken, um festzustellen, ob andere Funktionen Ressourcen verwenden.

So passen Sie das Stacksize-Limit für C6262 an

  1. Öffnen Sie die Visual Studio-Projektdatei (.vcxproj) für Ihren Kernelmodustreiber (oder Ihre Komponente) im Editor oder in einem anderen Text-Editor.
  2. Fügen Sie eine neue <ItemDefinitionGroup> für den Compiler <ClCompile hinzu>.
  3. Fügen Sie das <PREfastAdditionalOptions-Element> hinzu, und legen Sie die Stacksize-Bytes<> fest. Der Standardwert ist stacksize1024.
     <ItemDefinitionGroup>
       <ClCompile>


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

    </ClCompile>
  </ItemDefinitionGroup>
  1. Speichern Sie die Projektdatei. Starten Sie Visual Studio, laden Sie das aktualisierte Treiberprojekt, und führen Sie die Codeanalyse aus.

    Um den Standardwert von 1 KB zu rückgängig machen, können Sie die änderungen, die Sie an der Projektdatei vorgenommen haben, rückgängig machen, oder ändern Sie den Stapelgrößeswert in stacksize1024.

Codeanalyse für Treiberwarnungen