Das Werkzeug AnEdge prüft TAA-Module nach bestimmten, in den Analysemethoden festgelegten Kritierien.
Die Auswahl durchzuführender Prüfungen und zu prüfender Module ist zur Zeit nur über eine Batch-Schnittstelle möglich.
Als Ausgabe wird eine XML-Datei erstellt, wobei zusätzlich eine darauf anzuwendende XSL-Datei angegeben werden kann.
Die Überprüfung erfolgt – je nach SearchOrder-Angabe - auf Basis von Ressourcen-DLLs und/oder Rochade.
Syntax:
AnEdge [Optionen] [Aufgaben]
Optionen:
Aufgaben:
Zu jeder Aufgabe sind – in dieser Reihenfolge – anzugeben:
<Bausteintyp> <Bausteinname> <Analysename>
Beispiel:
AnEdge –a Test –o c:\analyse\a1.xml –d0 –lo c:\analyse\a1.log –ex c:\analyse\a1.anl
wobei Analyse.anl enthält:
STRG PG-TSTR-START Locuse STRG PG-TSTR-START Event
Folgende Methoden sind im Moment implementiert (der Name entspricht dem in der Aufgabe anzugebenden Analysenamen):
Anwendbar für Bausteintyp: MODL
Überprüft, ob die in einer Modulschnittstelle verwendeten Zustände in der EDB definiert sind.
Für Steuerungen wird zusätzlich geprüft:
Anwendbar für Bausteintyp: MODL
Überprüft, ob die in einer Modulschnittstelle verwendeten Ereignisse in der EDB definiert sind.
Für Steuerungen wird zusätzlich geprüft:
Anwendbar für Bausteintyp: STRG
Überprüft Steuerung auf Abbruch- oder Endekonstrukte innerhalb von Parallelverarbeitungen.
In der Usage-Section der XML-Ausgabedatei werden die gefundenen Abbruchkonstrukte innerhalb von Parallelverarbeitungen aufgelistet.
Anwendbar für Bausteintyp: STRG, CTVK
Überprüft die Verwendung von Globalen Objekten. Bei dieser Überprüfung wird auch eventspezifisch die Verwendung der Globalen Objekte überprüft.
Als Ergebnis gibt es zwei Teilresultate:
Für das WrongUsed Teilresultat gilt folgendes:
Rolle Objekt für dieses Event in diesen Baustein | Rolle Objekt in aufgerufenem Baustein | Aktion |
---|---|---|
NOP | MOD, CRE, DEL oder REF | Fehler |
Sonstige Rollen | MOD, CRE, DEL oder REF | OK |
Für das WrongUsed Teilresultat gilt folgendes (nur für CTVK):
Rolle Objekt für dieses Event in diesen Baustein | Rolle Objekt in aufgerufenem Baustein | Aktion |
---|---|---|
NOP | MOD, CRE, DEL oder REF | Fehler |
REF | MOD, CRE, DEL | Info |
MOD, CRE oder DEL | MOD, CRE, DEL oder REF | OK |
Anwendbar für Bausteintyp: STRG, CTVK
Überprüft die Verwendung von Parameterobjekten. Bei dieser Überprüfung wird auch eventspezifisch die Verwendung von Parameterobjekte überprüft.
Als Ergebnis gibt es zwei Teilresultate:
Für das WrongUsed Teilresultat gilt folgendes:
Rolle Objekt für dieses Event in diesen Baustein | Rolle Objekt in Aufgerufenen Baustein | Aktion |
---|---|---|
NOP | MOD, CRE, DEL oder REF | Fehler |
Sonstige Rollen | MOD, CRE, DEL oder REF | OK |
Für das WrongUsed Teilresultat gilt folgendes (nur für CTVK):
Rolle Objekt für dieses Event in diesen Baustein | Rolle Objekt in Aufgerufenen Baustein | Aktion |
---|---|---|
NOP | MOD, CRE, DEL oder REF | Fehler |
REF | MOD, CRE, DEL | Info |
MOD, CRE oder DEL | MOD, CRE, DEL oder REF | OK |
Anwendbar für Bausteintyp: STRG (Ab Version 8.03 auch für CTVK)
Überprüft die Verwendung der lokalen Objekte. Objekte die definiert sind, aber nicht verwendet werden, werden aufgelistet.
(Ab Version 8.03) Analyse kann auch für CTV-Module verwendet werden.
Anwendbar für Bausteintyp: STRG (Ab Version 8.03 auch für CTVK)
Überprüft die Verwendung von Objekten, die nicht definiert sind.
1. WrongUsed: Hier werden pro Ereignis die Objekte aufgelistet, die verwendet werden, aber nicht definiert sind.
2. WrongUsed-ByVal: Hier werden die Objekte aufgelistet, die innerhalb von Schleifen in Bausteinaufrufen mit ByValue übergebenen werden.
3. Unused: Objekte, die definiert sind, aber nicht verwendet werden.
(Ab Version 8.03) Analyse kann auch für CTV-Module verwendet werden.
Anwendbar für Bausteintyp: STRG
Diese Analyse überprüft, ob bei Entscheidungen Bedingungscode vorhanden ist. Leere Bedingungen werden in der Usage Section aufgelistet. Auch Schleifen-Konstrukte ohne Bedingung werden erkannt.
Anwendbar für Bausteintyp: STRG
Überprüft die Verwendung von Lokalen Steuerungsteilen.
Anwendbar für Bausteintyp: STRG
Diese Analyse überprüft, ob Objekte mit Rolle MOD auch wirklich modifiziert werden.
Anwendbar für Bausteintyp: STRG
Überprüft die Verwendung von Steuerungsvariablen:
Anwendbar für Bausteintyp: MODL
Überprüft, ob für das Modul eine Ityp- und Ispc-Angabe vorhanden ist.
Anwendbar für Bausteintyp: STRG
Überprüft die Verwendung von Schweben:
Außerdem wird eine Info erzeugt, wenn ein globales Objekt mit einer Schwebe verknüpft ist.
Anwendbar für Bausteintyp: STRG, CTVK
Diese Analyse überprüft, ob bei Aufrufen auch ein Modul angegeben ist und ob alle Parameter-Objekte bestückt werden. Es wird zusätzlich überprüft, ob es bei Aufrufen Objekte gibt, die mehreren Parametern (mehr als einem) zugewiesen wurden.
Es werden fehlende Objekt-Zuweisungen erkannt, wenn einem aufgerufenen Modul Parameterobjekte hinzugefügt wurden (Schnittstellenänderung) aber der Modulaufruf im Aufrufer noch nicht angepasst wurde.
Es werden überflüssige Objekt-Zuweisungen erkannt, wenn einem aufgerufenen Modul Parameterobjekte entfernt wurden (Schnittstellenänderung) aber der Modulaufruf im Aufrufer noch nicht angepasst wurde.
Es wird ebenfalls geprüft, ob ein Modul unerlaubterweise außerhalb der eigenen Anwendung aufgerufen wird.
Für CTV-Module werden auch Modulaufrufe im Pseudocode geprüft.
Anwendbar für Bausteintyp: GSTR
Überprüft, ob für das Modul ein Gevo-Ende Konstrukt vorhanden ist.
Anwendbar für Bausteintyp: STRG
Überprüft die Verwendung von Transaktions-Konstrukten innerhalb einer Steuerung. Alle möglichen Pfade einer Steuerung werden für jedes Ereignis durchlaufen, um zu überprüfen, ob die Anzahl Begin-Transaktions-Konstrukte und Ende-Transaktions-Konstrukte (und auch Rollback) richtig ist. Auch wird die Verwendung von Transaktions-Konstrukten in Parallel-Pfaden untersucht. Bei der Verwendung von Transaktions-Konstrukten innerhalb von Schleifen wird eine Warnung generiert, da die korrekte Verwendung hier erst zur Laufzeit festgestellt werden kann. Es könnte ja z.B. sein, dass ein Transaktionsabbruch aufgrund der Schleife versehentlich mehrmals durchlaufen wird, wenn die Verarbeitung nicht rechtzeitig beendet wird.
Um feststellen zu können, ob unterhalb eines Arbeitsgangs Transaktionierungen laufen, listet diese Analyse auf, ob die Steuerung transaktioniert und welche Module in dieser Steuerung aufgerufen werden. Mit diesen Daten sollte es möglich sein, Anwendungskomponenten von Rochade aus zu analysieren.
Anwendbar für Bausteintyp: MODL
Überprüft, ob für das Modul in der Schnittstelle ein Kommentar angegeben wurde.
Für Steuerungen wird für alle Konstrukte geprüft, ob ein Kommentar angegeben wurde. Für ein Bausteinaufruf-Konstrukt wird zusätzlich geprüft, ob in der Modul-Schnittstelle ein Kommentar angegeben wurde.
Anwendbar für Bausteintyp: MODL
Diese Analyse überprüft, ob Namen für Module, Parameterobjekte, globale Objekte, etc. einer Vorgabe (Namenskonvention) entsprechen. In einer EDB-Tabelle (ANNC) können Regeln für Namenskonventionen baustein- und anwendungsspezifisch aufgenommen werden. Es müssen reguläre Ausdrücke für die Vorgabe von Modulnamen, Namen für Parameterobjekte oder globale Objekte, etc. angegeben werden.
Syntaxbeschreibung für reguläre Ausdrücke Sprachelemente für reguläre Ausdrücke – Kurzübersicht
Anwendbar für Bausteintyp: STRG
Diese Analyse überprüft, ob CTV-Konstrukte mit Drucken auf Nicht-GeVo-Ebene verwendet werden. Es geht darum, dass verhindert werden soll, Dokumente ggf. mehrmals zu Drucken. Wenn das Drucken z.B. in einem Arbeitsgang stattfinden würde und dort anschließend der Arbeitsgang unterbrochen wird, dann würden die Dokumente beim Wiederanstarten wieder ausgedruckt werden.
Anwendbar für Bausteintyp: STRG (Ab Version 7.07)
Diese Analyse überprüft, wenn für die Steuerung „UseWorkflowTransaction“ konfiguriert ist, ob für ein Ereignis möglicherweise problematische Konstrukte verwendet werden (Interaktionsbausteine oder Manuelle Entscheidungen).
Anwendbar für Bausteintyp: CTVK
Diese Analyse überprüft die Verwendung von CTV-Variablen:
Anwendbar für Bausteintyp: CTVK
Diese Analyse überprüft verschiedene Angaben in OpenXML-Bausteinen, die ggf. bei der Montage zu Problemen führen können:
Anwendbar für Bausteintyp: SSBS
Diese Analyse überprüft Textbausteine auf die Benutzung von erlaubten Schriftarten und Schriftgrößen. Bei der Verwendung von nicht erlaubten Schriftarten und Schriftgrößen wird eine Warnung generiert. Bei Bausteinen, die zur Laufzeit nicht editierbar sind, wird falls diese Bausteine analysiert werden auch die Verwendung geprüft, aber nicht als Warnung, sondern als Information.
Anwendbar für Bausteintyp: STRG
Diese Analyse überprüft die Verwendung von manuellen Entscheidungen in Steuerungen:
Anwendbar für Bausteintyp: STRG
Diese Analyse überprüft die Verwendung von Workflow-Eigenschaften in Steuerungen:
Anwendbar für Bausteintyp: STRG
Diese Analyse überprüft die Attribuierung von Konstrukten in Steuerungen:
Das Ergebnis-XML besteht aus einem AnalysisReports Tag. Unterhalb von diesem Tag gibt es (eventuell mehrere) Analysis Tag(s). Eine Analysis besteht aus Name, Methode und Datum. Auch sind in einer Analysis ein AnalysisHeader und ein ComponentHeader enthalten. Neben einigen analysebezogenen Ergebnissen gibt es ein ResultCount. Die analysebezogenen Ergebnisse werden weiter unten beschrieben. Hier folgt zunächst ein XML-Ausschnitt ohne die Ergebnisse:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?> <AnalysisReports> <Analysis> <Name>States</Name> <Method>Analyse</Method> <DateofAnalysis>2003-05-20-16.11.45.071360</DateofAnalysis> <AnalysisHeader> <AnalysisName>STATES</AnalysisName> <Description>Checking validity of states used</Description> <Version>1.0</Version> </AnalysisHeader> <ComponentHeader> <ModuleType>GK-TEST-ANEDGE</ModuleType> <ModuleType>SSTR</ModuleType> <Application>test</Application> <ModificationDate>20030514115732</ModificationDate> </ComponentHeader> <ResultCount>0</ResultCount> </Analysis> <Analysis> <Name>ParEnd</Name> <Method>Analyse</Method> <DateofAnalysis>2003-05-20-16.11.50.728361</DateofAnalysis> <AnalysisHeader> <AnalysisName>PAREND</AnalysisName> <Description>Checking for End or Abbruch in Processes</Description> <Version>1.0</Version> </AnalysisHeader> <ComponentHeader> <ModuleType>GK-TEST-ANEDGE</ModuleType> <ModuleType>SSTR</ModuleType> <Application>test</Application> <ModificationDate>20030514115732</ModificationDate> </ComponentHeader> <ResultCount>0</ResultCount> </Analysis> </AnalysisReports>
Die analysebezogenen Ergebnisse können aus mehreren Teilergebnissen bestehen. Als Beispiel folgt hier ein Ergebnis für die „States“-Analyse. In diesem Beispiel sind drei Teilergebnisse zu erkennen: Interface, Used und Unused. Im Interface-Teilergebnis werden die im Modul-Interface gefundenen Fehler aufgelistet (Zustände, die im Modulinterface benutzt werden, aber nicht mehr in der Zustandstabelle vorhanden sind). Im Usage-Teilergebnis wird die Benutzung von Zuständen im Modul ermittelt. Aufgelistet wird, wo ein Zustand gesetzt wird, der nicht im Modul-Interface angegeben ist. Als letztes werden im Unused-Teilergebnis die nicht benutzten Zustände aufgelistet:
<Interface> <Results> <State>NICHT-OK</State> <State>OK</State> </Results> <ResultCount>0</ResultCount> </Interface> <Usage> <Results> <Steuerungsteil> <Cedge> <Name>empty</Name> <Type>2</Type> </Cedge> <ResultCount>0</ResultCount> </Steuerungsteil> <ResultCount>0</ResultCount> </Results> </Usage> <Unused> <Results> <NotUsed> <Reason>Component defined but never used</Reason> <Severity>Info</Severity> <Name>ABBRUCH</Name> <Type>State</Type> <DefinedIn>GK-TEST-ANEDGE</DefinedIn> </NotUsed> <ResultCount>1</ResultCount> </Results> </Unused> <ResultCount>1</ResultCount>
Beim Unused-Teilergebnis wird im obigen Beispiel ein im Modul-Interface beschriebener, aber nicht verwendeter Zustand gemeldet. Dies wird mittels eines Standard XML-Teils angegeben:
<NotUsed> <Reason>Component defined but never used</Reason> <Severity>Info</Severity> <Name>ABBRUCH</Name> <Type>State</Type> <DefinedIn>GK-TEST-ANEDGE</DefinedIn> </NotUsed>
Severity kann folgende Werte haben: Info, Warning, Error, Severe und Abortive.
Bei der Analyse von Steuerungen werden zu jedem gefundenen Fehler auch Angaben zum Konstrukt geschrieben. Dies ist zu sehen in folgender Conditions-Analyse:
<Usage> <Results> <Steuerungsteil> <Cedge> <Name>empty</Name> <Type>2</Type> </Cedge> <Missing> <Reason>Missing information in Expression</Reason> <Severity>Error</Severity> <What>Empty</What> <Where>Expression</Where> <Cedge> <ConsID>5</ConsID> <ConsName>empty</ConsName> <ConsText>Bedingung</ConsText> </Cedge> </Missing> <ResultCount>1</ResultCount> </Steuerungsteil> <ResultCount>1</ResultCount> </Results> </Usage> <ResultCount>1</ResultCount>
Konstrukte werden im XML mit einem ConsType Attribut generiert.
<Cedge> <ConsID>16</ConsID> <ConsName>empty</ConsName> <ConsText>Iterationsabbruch SCHLEIFE</ConsText> <ConsType>515</ConsType> </Cedge>