/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:ruleset
ruleset_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.dll
die 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.dll
HResultCheck.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:env
oder /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 *.ruleset
die 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
Ö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).
Wählen Sie die Eigenschaftenseite für die Codeanalyse>der allgemeinen Konfigurationseigenschaften>aus.
Ändern Sie eine oder mehrere der Codeanalyseeigenschaften .
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:
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts.
Wählen Sie die Konfigurationseigenschaften>C/C++>External Includes-Eigenschaftenseite aus.
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.
Wählen Sie OK oder Übernehmen, um die Änderungen zu speichern.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe EnablePREfast.
Siehe auch
MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile