Automation Interface Unterstützung
Das Static Analysis kann teilweise über das Automation Interface (AI) bedient werden. Die AI-Unterstützung umfasst folgende Befehle/Aktionen:
- Explizite Durchführung der Statischen Analyse per Automation Interface
- Implizite Durchführung der Statischen Analyse per Automation Interface
- Einstellungen/Konfiguration per Automation Interface speichern
- Einstellungen/Konfiguration per Automation Interface laden
- Metriken exportieren
- Statische Analyse starten und in Sarif-Datei exportieren
Bitte beachten Sie hierzu auch die Automation Interface Dokumentation:
Produktbeschreibung
Explizite Durchführung der Statischen Analyse per Automation Interface
Sie können die Statische Analyse automatisiert ausführen lassen, indem Sie die Methode RunStaticAnalysis() per Automation Interface aufrufen.
Funktional entspricht dies den folgenden Befehlen:
- Befehl 'Statische Analyse durchführen'
- Befehl 'Statische Analyse durchführen [Überprüfe alle Objekte]'
Parameter:
Für die Methode RunStaticAnalysis() kann bCheckAll als optionaler Parameter angegeben werden. Die Methode kann aber auch parameterlos aufgerufen werden.
Parameter | Aufruf |
|---|---|
RunStaticAnalysis() | Ausführung des Befehls Statische Analyse durchführen [Überprüfe alle Objekte] |
RunStaticAnalysis(bCheckAll = TRUE) | |
RunStaticAnalysis(bCheckAll = FALSE) | Ausführung des Befehls Statische Analyse durchführen |
PowerShell-Beispiel:
$p = $sysMan.LookupTreeItem("TIPC^MyPlcProject^MyPlcProject Project")
$p.RunStaticAnalysis()C#-Beispiel für TC3.1 Version >= Build 4024:
ITcPlcIECProject3 plcIec3 = sysMan.LookupTreeItem("TIPC^Untitled1^Untitled1 Project") as ITcPlcIECProject3;
plcIec3.RunStaticAnalysis();C#-Beispiel für TC3.1 Version >= Build 4026:
ITcPlcIECProject4 plcIec4 = sysMan.LookupTreeItem("TIPC^Untitled1^Untitled1 Project") as ITcPlcIECProject4;
plcIec4.RunStaticAnalysis();Implizite Durchführung der Statischen Analyse per Automation Interface
Alternativ besteht die Möglichkeit, die Einstellung Statische Analyse automatisch durchführen zu aktivieren und das Projekt per Automation Interface zu erstellen, sodass bei diesem Erstellungsvorgang implizit die Statische Analyse durchgeführt wird.
Einstellungen/Konfiguration per Automation Interface speichern
![]() | Verfügbar ab TwinCAT 3.1 Build 4026 |
Die Einstellungen vom Static Analysis können per Automation Interface in eine *.csa-Datei gespeichert bzw. exportiert werden.
Parameter:
Für die Methode SaveStaticAnalysisSettings(string bstrFilename) muss der Zielpfad der Konfigurationsdatei als Übergabeparameter angegeben werden.
![]() | Die Methode |
C#-Beispiel für TC3.1 Version >= Build 4026:
// Path to the location to export the SAN configuration
string saveCsaPath = @"C:\Users\UserName\Desktop\SaveTest.csa";
[…]
// Navigate to PLC project
ITcPlcIECProject4 plcIec4 = sysMan.LookupTreeItem("TIPC^Untitled1^Untitled1 Project") as ITcPlcIECProject4;
// Save SAN configuration
plcIec4.SaveStaticAnalysisSettings(saveCsaPath);Einstellungen/Konfiguration per Automation Interface laden
![]() | Verfügbar ab TwinCAT 3.1 Build 4026 |
Eine vorgefertigte Static Analysis Konfiguration (*.csa-Datei) kann per Automation Interface ins PLC-Projekt geladen werden. Die hierdurch geladenen Einstellungen können anschließend per AI überprüft werden, indem das Static Analysis ausgeführt wird (s.o.).
Parameter:
Für die Methode LoadStaticAnalysisSettings(string bstrFilename) muss der Pfad der zu ladenden Konfigurationsdatei als Übergabeparameter angegeben werden.
![]() | Die Methode |
C#-Beispiel für TC3.1 Version >= Build 4026:
// Path to load a SAN configuration
string loadCsaPath = @"C:\Users\UserName\Desktop\LoadTest.csa";
[…]
// Navigate to PLC project
ITcPlcIECProject4 plcIec4 = sysMan.LookupTreeItem("TIPC^Untitled1^Untitled1 Project") as ITcPlcIECProject4;
// Load SAN configuration
plcIec4.LoadStaticAnalysisSettings(loadCsaPath);
// Optionally run SAN afterwards
plcIec4.RunStaticAnalysis();Metriken exportieren
![]() | Verfügbar ab TwinCAT 3.1 Build 4026.4 |
Die Standard-Metriken können per Automation Interface in eine Textdatei (*.csv) exportiert werden. Dabei findet implizit eine aktuelle Berechnung der Metriken statt. Eine manuelle Ausführung dieses Vorgangs würde die beiden folgenden Befehle beinhalten:
- Befehl 'Standard-Metriken anzeigen'
- Befehl Tabelle exportieren, siehe Befehle im Kontextmenü der Ansicht 'Standard-Metriken'
Parameter:
Für die Methode ExportStandardMetrics(string bstrFilename) muss der Zielpfad der resultierenden Exportdatei als Übergabeparameter angegeben werden.
![]() | Die Methode |
C#-Beispiel für TC3.1 Version >= Build 4026.4:
// Path to save the csv file
string savePath = @"C:\Users\UserName\Desktop\Metrics.csv";
[…]
// Navigate to PLC project
ITcPlcIECProject5 plcIec5 = sysMan.LookupTreeItem("TIPC^Untitled1^Untitled1 Project") as ITcPlcIECProject5;
// Export standard metrics
plcIec5.ExportStandardMetrics(savePath);Statische Analyse starten und in Sarif-Datei exportieren
![]() | Verfügbar ab TwinCAT 3.1.4026.20 |
Die statische Codeanalyse kann per Automation Interface gestartet und das Ergebnis in einer SARIF-Datei gespeichert werden.
Funktional entspricht dies dem folgenden Befehl:
Parameter:
Für die Methode ExportToSarif(string exportPath) kann der Zielpfad der resultierenden Sarif-Datei als Übergabeparameter angegeben werden. Wenn Sie keinen Pfad angeben, wird die Datei im Ordner des aktuellen Projekts gespeichert.
Hinweis:
Vor der Ausführung der Methode ExportToSarif() – und damit vor der Ausführung der Analyse und der Speicherung der SARIF-Datei – können Sie durch Aufruf der Methode LoadStaticAnalysisSettings() die gewünschte SAN-Konfiguration laden. Weitere Informationen zu dem Laden der Konfiguration per Automation Interface finden Sie hier:
C#-Beispiel für TC3.1 Version >= Build 4026.20:
// Path to load a SAN configuration
string loadCsaPath = @"C:\Users\UserName\Desktop\LoadTest.csa";
// Path to save the Sarif file
string sarifExportPath = @"C:\Users\UserName\Desktop\SarifFolder\SarifExpotViaAutomationInterface.sarif.json";
// Navigate to PLC project
ITcPlcIECProject7 plcIec7 = sysMan.LookupTreeItem("TIPC^Untitled1^Untitled1 Project") as ITcPlcIECProject7;
// Load desired SAN configuration
plcIec7.LoadStaticAnalysisSettings(loadCsaPath);
// Run SAN and save results in Sarif file
plcIec7.ExportToSarif(sarifExportPath); 