Freigeben über


/analyze (Codeanalyse)

Aktiviert Codeanalyse- und Steueroptionen.

Syntax

Allgemeine Analyseoptionen:

/analyze[-]
/analyze:only
/analyze:quiet
/analyze:max_paths number
/analyze:stacksize number
/analyze:WX-

Optionen des Analyse-Plug-Ins:

/analyze:plugin plugin_dll

Optionen für externe Dateianalyse:

/analyze:external-
/analyze:external:ruleset ruleset_files

Analyseprotokolloptionen:

/analyze:autolog[-]
/analyze:autolog:ext extension
/analyze:log log_path

Optionen für das Protokolldateiformat:

/analyze:log:format:sarif
/analyze:log:format:xml

Optionen für Protokolldateiinhalte:

/analyze:sarif:analyzedfiles[-]
/analyze:sarif:configuration[-]
/analyze:log:compilerwarnings
/analyze:log:includesuppressed

Regelsatzoptionen:

/analyze:rulesetruleset_file

Regelsatzoptionen:

/analyze:projectdirectory project_directory
/analyze:rulesetdirectory ruleset_directories
/analyze:ruleset ruleset_files

Argumente

Allgemeine Analyseoptionen

/analyze[-]
Aktiviert die Codeanalyse. Wird verwendet /analyze- , um die Analyse explizit zu deaktivieren. /analyze- ist das Standardverhalten.

Standardmäßig wechselt die Analyseausgabe in die Konsole oder das Visual Studio-Ausgabefenster wie andere Fehlermeldungen. Die Codeanalyse erstellt auch eine Protokolldatei namens filename.nativecodeanalysis.xml, wobei filename der Name der analysierten Quelldatei ist.

/analyze:only
Standardmäßig kompiliert der Compiler den Code, um Objektdateien zu generieren, bevor die Codeanalyse ausgeführt wird. Die /analyze:only Option macht den Compiler zum Überspringen des Codegenerierungsdurchlaufs und führt die Codeanalyse direkt durch. Compilerfehler verhindern weiterhin die Ausführung der Codeanalyse. Der Compiler meldet jedoch keine anderen Warnungen, dass er während des Codegenerierungsdurchlaufs gefunden wird. Wenn das Programm nicht frei von Warnungen zur Codegenerierung ist, sind Analyseergebnisse möglicherweise unzuverlässig. Es wird empfohlen, diese Option nur zu verwenden, wenn der Code Syntaxüberprüfungen ohne Fehler oder Warnungen übergibt.

/analyze:quiet
Deaktiviert die Analyseausgabe in der Konsole oder im Visual Studio-Ausgabefenster.

/analyze:max_paths number
Der number Parameter gibt die maximale Anzahl der zu analysierenden Codepfade an. Die Analyse ist standardmäßig auf 256 Pfade festgelegt. Größere Werte führen zu einer gründlicheren Überprüfung, aber die Analyse kann länger dauern.

/analyze:stacksize number
Der number Parameter gibt die Größe in Byte des Stapelframes an, der eine Warnung C6262 generiert. Die Standardgröße des Stapelrahmens beträgt 16 KB.

/analyze:WX-
Weist den Compiler an, Codeanalysewarnungen nicht als Fehler zu behandeln, auch wenn die /WX Option verwendet wird. Weitere Informationen finden Sie unter /WX (Warnstufe).

Optionen für Analyse-Plug-Ins

/analyze:plugin plugin_dll
Aktiviert die angegebene Codeanalyse-Plug-In-DLL für die Codeanalyse.

Der Abstand zwischen /analyze:plugin dem Dateipfad und dem plugin_dll Dateipfad ist optional, wenn der Pfad keine doppelten Anführungszeichen (") erfordert. Sie können z. B. schreiben /analyze:plugin EspxEngine.dll. Wenn der Pfad jedoch in doppelte Anführungszeichen eingeschlossen ist, können Sie kein Leerzeichen zwischen /analyze:plugin und dem Dateipfad haben. Ein Beispiel: /analyze:plugin"c:\path\to\EspxEngine.dll".

Das Codeanalysemodul verwendet Plug-Ins, um bestimmte Kategorien von Fehlern zu finden. Das Codeanalysemodul enthält einige integrierte Plug-Ins, die verschiedene Fehler erkennen. Wenn Sie ein weiteres Plug-In mit dem Codeanalysemodul verwenden möchten, geben Sie es mithilfe der /analyze:plugin Option an.

Das Plug-In LocalEspC.dll implementiert parallele Analyseprüfungen. Diese Prüfungen lösen Warnungen im C261XX-Bereich aus, z . B. C26100 bis C26167.

Verwenden Sie zum Laden LocalEspC.dlldie Compileroption /analyze:plugin LocalEspC.dll.

Einige Plug-Ins, z EspXEngine.dll. B. , die mit Visual Studio ausgeliefert werden, verwenden Erweiterungen, die weitere Analysen ausführen können. Visual Studio enthält diese Erweiterungen für EspXEngine: ConcurrencyCheck.dll, , CppCoreCheck.dll, EnumIndex.dll, und VariantClear.dllHResultCheck.dll. Sie prüfen auf Mängel auf Parallelitätsprobleme, CppCoreGuidelines-Verstöße, unangemessene Verwendung von enum Werten als Indizes, HRESULT Werte oder VARIANT Werte.

Wenn Sie auf der Befehlszeile aufbauen, können Sie die Esp.Extensions Umgebungsvariable verwenden, um EspXEngine-Erweiterungen anzugeben. Zum Beispiel:

set Esp.Extensions=ConcurrencyCheck.dll;CppCoreCheck.dll;

Verwenden Sie ein Semikolon (;), um die Erweiterungen zu trennen, wie im Beispiel gezeigt. Ein nachfolgendes Semikolon ist nicht erforderlich. Sie können einen absoluten Dateipfad für eine Erweiterung verwenden oder einen relativen Pfad aus dem Verzeichnis angeben, das enthält EspXEngine.dll.

Das EspXEngine.dll Plug-In verwendet ConcurrencyCheck.dll , um parallele Codeanalyseprüfungen zu implementieren. Diese Prüfungen lösen Warnungen im C261XX-Bereich aus, z . B. C26100 bis C26167.

Wenn Sie in einem Eingabeaufforderungsfenster für Entwickler erstellen, legen Sie zuerst die Esp.Extensions Umgebungsvariable fest, um die ConcurrencyCheck.dll Erweiterung anzugeben:

set Esp.Extensions=ConcurrencyCheck.dll

Verwenden Sie dann die Compileroption /analyze:plugin EspXEngine.dll , um das EspXEngine-Plug-In zu verwenden.

Optionen für externe Dateianalyse

Ab Visual Studio 2019, Version 16.10, können Sie verschiedene Analyseregeln und -verhalten für externe Header angeben. Verwenden Sie die /external:I, /external:envoder /external:anglebrackets Optionen, um Verzeichnisse als "externe" Verzeichnisse anzugeben. Alle Dateien, die aus #include einem externen Verzeichnis oder ihren Unterverzeichnissen verwendet werden, werden als externe Header betrachtet. Weitere Informationen finden Sie unter /external (Diagnose externer Header).

Die Codeanalyse bietet die folgenden Optionen zum Steuern der Analyse externer Dateien:

/analyze:external-
Überspringt die Analyse externer Headerdateien. Standardmäßig analysiert die Codeanalyse externe Headerdateien wie andere Dateien. Wenn die Option festgelegt ist, überspringt die /analyze:external- Codeanalyse alle dateien, die als extern angegeben wurden, mit Ausnahme von Vorlagen aus externen Dateien. In externen Headern definierte Vorlagen werden mithilfe der /external:templates- Option als nicht extern behandelt. Die /external:Wn Option wirkt sich nicht auf die Codeanalyse aus. Die Codeanalyse analysiert z. B. externe Dateien und meldet Fehler, auch wenn /external:W0 angegeben.

/analyze:external:ruleset ruleset_files
Der ruleset_files Parameter gibt eine oder mehrere durch Semikolons getrennte Regelsatzdateien an, die für die Analyse externer Dateien verwendet werden sollen. Informationen zu Regelets finden Sie im Abschnitt "Optionen für Regelsätze".

Es gibt eine Umgebungsvariable (CAExcludePath), die ähnliche, aber einfachere Funktion zum Überspringen der Analyse von Dateien unter den in der Umgebungsvariablen angegebenen Verzeichnissen bietet. Wenn ein Verzeichnis sowohl in der Option als auch /external:* in der CAExcludePath Umgebungsvariable angegeben ist, wird es als ausgeschlossen betrachtet, und /analyze:external* die Optionen gelten nicht für dieses Verzeichnis.

Analyseprotokolloptionen

/analyze:autolog[-]
Dieses Kennzeichen wurde verwendet, um die Erstellung der Analyseprotokolldatei für jede der zu analysierenden Quelldateien zu ermöglichen. Protokolldateien werden jetzt standardmäßig erstellt, sodass dieses Flag hauptsächlich redundant ist. Wenn sie verwendet wird, wird die Standardprotokollerweiterung *.pftlog anstelle von .xml. Wird verwendet /analyze:autolog- , um die Protokollierung für Dateien zu deaktivieren.

/analyze:autolog:ext extension
Überschreibt die Standarderweiterung der Analyseprotokolldateien und verwendet extension stattdessen. Wenn Sie die .sarif Erweiterung verwenden, verwendet die Protokolldatei das SARIF-Format anstelle des Standard-XML-Formats.

/analyze:log log_path
Gibt einen Protokolldateipfad log_path anstelle des automatisch generierten Protokolldateipfads an. Wenn der log_path Pfad einen nachfolgenden umgekehrten Schrägstrich aufweist und sich auf ein vorhandenes Verzeichnis bezieht, erstellt die Codeanalyse alle Protokolldateien im angegebenen Verzeichnis. log_path Gibt andernfalls einen Dateipfad an. Ein Dateipfad weist den Compiler an, Protokolle für alle analysierten Quelldateien in der angegebenen Protokolldatei zu kombinieren. Wenn der Dateipfad eine .sarif Erweiterung aufweist, verwendet die Protokolldatei das SARIF-Format anstelle des Standard-XML-Formats. Sie können dieses Verhalten mit der Option /analyze:log:format:* überschreiben.

Optionen für das Protokolldateiformat

Ab Visual Studio 2019, Version 16.9, können Sie verschiedene Protokollformatoptionen für die Codeanalyse angeben.

/analyze:log:format:xml
Erzwingt die Verwendung des XML-Protokollformats, das nicht von der verwendeten Dateierweiterung verwendet wird.

/analyze:log:format:sarif
Erzwingt die Verwendung des SARIF-Protokollformats, das für die verwendete Dateierweiterung irrelevant ist.

Optionen für Protokolldateiinhalte

Ab Visual Studio 2019, Version 16.9, können Sie verschiedene Protokollinhaltsoptionen für die Codeanalyse angeben.

/analyze:sarif:analyzedfiles[-]
Fügt der SARIF-Protokolldatei Dateieinträge für analysierte Dateien hinzu, die keine Warnungen ausgeben. Diese Option ist standardmäßig deaktiviert. Artefakte für die Quelldatei und für Dateien, die Ergebnisse ausgegeben haben, sind immer enthalten.

/analyze:sarif:configuration[-]
Fügt Regelkonfigurationseinträge hinzu, um zu bestimmen, wie der Benutzer die Standardregelkonfiguration überschreibt (standardmäßig deaktiviert).

/analyze:log:compilerwarnings
Fügt der Analyseprotokolldatei sowohl Fehler hinzu, die das Analysemodul findet, als auch alle Compilerwarnungen. Standardmäßig sind Compilerwarnungen nicht in der Analyseprotokolldatei enthalten. Weitere Informationen zu Compilerwarnungen während der Codeanalyse finden Sie in der /analyze:only Option.

/analyze:log:includesuppressed
Fügt der Analyseprotokolldatei sowohl unterdrückte Warnungen als auch nicht komprimierte Warnungen hinzu. Standardmäßig sind unterdrückte Warnungen nicht in der Analyseprotokolldatei enthalten. Wenn Regelsatzdateien für die Analyse angegeben werden, werden die von den Regelsatzdateien deaktivierten Warnungen nicht im Protokoll enthalten, auch wenn /analyze:log:includesuppressed angegeben.

Regelsatzoptionen

/analyze:projectdirectory project_directory
Gibt das aktuelle Projektverzeichnis an. Wenn das Regelet (oder ein enthaltenes Element) ein Dateiname ist, sucht der Compiler zuerst nach der Datei unter dem angegebenen project_directory. Wenn sie nicht gefunden wird, durchsucht ruleset_directories sie das angegebene durch /analyze:rulesetdirectory, falls vorhanden. Wenn das Regelet (oder ein darin enthaltenes Element) ein relativer Pfad ist, sucht der Compiler zuerst unter dem Projektverzeichnis nach der Datei. Wenn das Regelet nicht gefunden wird, sucht es im aktuellen Arbeitsverzeichnis. Diese Option ist ab Visual Studio 2019, Version 16.9, verfügbar.

/analyze:rulesetdirectory ruleset_directories
Gibt eine durch Semikolons getrennte Liste von Suchpfaden für Regelsets an. Wenn das Regelet (oder ein enthaltenes Element) ein Dateiname ist, sucht der Compiler zuerst nach der Datei unter dem project_directory angegebenen durch /analyze:projectdirectory, falls vorhanden, gefolgt von der angegebenen ruleset_directories. Diese Option ist ab Visual Studio 2019, Version 16.9, verfügbar.

/analyze:ruleset ruleset_files
Gibt eine oder mehrere Regelsatzdateien an, die für die Analyse verwendet werden sollen. Diese Option kann die Analyse effizienter gestalten; das Analysemodul versucht, Prüfer auszuschließen, die vor der Ausführung keine aktiven Regeln in den Regelsatzdateien angegeben haben. Andernfalls führt das Modul alle aktivierten Prüfer aus.

/analyze:ruleset ruleset_file
Gibt eine Regelsatzdatei an, die für die Analyse verwendet werden soll. Diese Option kann die Analyse effizienter gestalten; das Analysemodul versucht, Prüfer auszuschließen, die vor der Ausführung keine aktiven Regeln in der Regelsatzdatei angegeben haben. Andernfalls führt das Modul alle aktivierten Prüfer aus.

Die Mit Visual Studio ausgelieferten Regelsatzdateien finden Sie in %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets.

Das folgende benutzerdefinierte Regelsatz weist das Analysemodul an, nach C6001 und C26494 zu suchen und als Warnungen zu melden.

Sie können diese Datei an einer beliebigen Stelle platzieren, solange Sie den vollständigen Pfad im Argument angeben.

Sie können diese Datei an einer beliebigen Stelle platzieren, solange Sie den vollständigen Pfad im Argument oder unter den in den /analyze:projectdirectory Oder /analyze:rulesetdirectory Optionen angegebenen Verzeichnissen angeben.

<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description="New rules to apply." ToolsVersion="15.0">
  <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
    <Rule Id="C6001" Action="Warning" />
    <Rule Id="C26494" Action="Warning" />
  </Rules>
</RuleSet>

Standardmäßig ist *.rulesetdie Dateierweiterung für Ruleset-Dateien . Visual Studio verwendet die Standarderweiterung beim Suchen nach Regelsatzdateien. Sie können jedoch jede Erweiterung verwenden.

Weitere Informationen zu Regelets finden Sie unter Verwenden von Regelsätzen zum Angeben der auszuführenden C++-Regeln.

Hinweise

Weitere Informationen finden Sie unter Codeanalyse für C/C++-Übersicht und Codeanalyse für C/C++-Warnungen.

So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).

  2. Wählen Sie die Eigenschaftenseite für die Codeanalyse>der allgemeinen Konfigurationseigenschaften>aus.

  3. Ändern Sie eine oder mehrere der Codeanalyseeigenschaften .

  4. Wählen Sie OK oder Übernehmen, um die Änderungen zu speichern.

So legen Sie Optionen für die externe Dateianalyse in Visual Studio 2019, Version 16.10 und höher, fest:

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts.

  2. Wählen Sie die Konfigurationseigenschaften>C/C++>External Includes-Eigenschaftenseite aus.

  3. Legen Sie Eigenschaften fest:

    • Deaktivieren Sie die Codeanalyse für externe Header , um die /analyze:external- Option zu aktivieren.

    • Das Analysis Ruleset für externe Header legt die /analyze:external:ruleset path Option fest.

  4. Wählen Sie OK oder Übernehmen, um die Änderungen zu speichern.

So legen Sie diese Compileroption programmgesteuert fest

  1. Siehe EnablePREfast.

Siehe auch

MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile