Pragma-Anweisungen für die Maschinencodeanalyse
Pragma-Anweisungen für die Maschinencodeanalyse
Mithilfe von Pragma-Anweisungen kann der Quellcode-Entwickler festlegen, ob der Quellcode bei der Codeanalyse berücksichtigt werden soll.
Im Gegensatz dazu werden Blocklisten zur Ausfilterung von Elementen nach der Analyseausführung verwendet. Die Wirkung ist dieselbe.
Pragma-Anweisungen ermöglichen Ihnen Folgendes:
oQuellcode markieren (z. B. Funktionen, Programme, Funktionsbausteine, Variablen usw.), damit er bei der Codeanalyse ignoriert wird (Anwendungsfall 1).
oQuellcode markieren, um die in der Konventionstabelle bzw. der Metriktabelle oder nur in der Abhängigkeitsansicht angezeigten Ergebnisse zu filtern (Anwendungsfall 2).
Siehe auch das Kapitel Blockliste.
Code, der ganz allgemein nicht analysiert werden soll, kann mit der Pragma-Anweisung ignore markiert werden. Derart markierte Elemente sind nicht Teil des Analysedatenmodells.
Attribut |
Beschreibung |
---|---|
{attribute 'code_analyzer' := 'ignore'} |
oMarkiert eine zu ignorierende POU oder Variable. oFunktioniert im rekursiven Modus (so werden z. B. die in der POU enthaltenen Variablen oder die Methoden unter einem Funktionsbaustein ebenfalls ignoriert). oHöchste Priorität (im Vergleich zum Attribut 'public_only'). |
attribute 'code_analyzer' := 'public_only'} |
oMarkiert eine POU zur ausschließlichen Berücksichtigung der öffentlichen Elemente(VarIn, VarOut, VarInOut, öffentliche Eigenschaften, öffentliche Methoden). Andere Elemente werden ignoriert. oFunktioniert im rekursiven Modus (so werden z. B. die Methoden unter einem Funktionsbaustein genauso gehandhabt wie der Funktionsbaustein). |
Code, der nicht geändert werden kann, jedoch in den Konventions- und/oder Metrikergebnissen angezeigt wird, kann markiert werden, damit er in der Ergebnisliste verborgen wird.
Attribut |
Beschreibung |
---|---|
{attribute 'code_analysis_ui' := 'filter_in_results'} |
oMarkiert eine in den Ergebnissen (Konventionstabelle, Metriktabelle und Abhängigkeitsansicht) auszufilternde POU oder Variable. oFunktioniert im nicht-rekursiven Modus. |
{attribute 'code_analysis_ui' := 'filter_in_conventions'} |
oMarkiert eine in den Ergebnissen der Konventionstabelle (über die UI oder Skript-API) auszufilternde POU oder Variable. oFunktioniert im nicht-rekursiven Modus. |
{attribute 'code_analysis_ui' := 'filter_in_metrics'} |
oMarkiert eine in den Ergebnissen der Metriktabelle (über die UI oder Skript-API) auszufilternde POU oder Variable. oFunktioniert im nicht-rekursiven Modus. |
{attribute 'code_analysis_ui' := 'filter_in_dependency_view'} |
oMarkiert eine in der Abhängigkeitsansicht (Dialogfeld Auswählen und Hinzufügen) auszufilternde POU oder Variable). oFunktioniert im nicht-rekursiven Modus. |
Ignorieren einer öffentlichen Variablen
METHOD PUBLIC PublicMethod
VAR_INPUT
{attribute 'code_analyzer' := 'ignore'}
i_iPublicButIgnoredVar: INT;
i_iPublicVar2: INT;
END_VAR
VAR
iPrivateVar2: INT;
END_VAR
Ausschließliche Berücksichtigung öffentlicher Elemente
{attribute 'code_analyzer' := 'public_only'}
FUNCTION_BLOCK FB_PublicOnlyTest1
VAR_INPUT
i_iPublicVar: INT;
END_VAR
VAR
iPrivateVar: INT;
END_VAR
Ausfiltern (POU) in den Ergebnissen
{attribute 'code_analysis_ui' := 'filter_in_results'}
PROGRAM SR_FilterInResultsTest1
VAR
END_VAR
Ausfiltern (Variable) in den Metrik- und/oder Konventionsergebnissen
PROGRAM SR_FilterVars
VAR
{attribute 'code_analysis_ui' := 'filter_in_metrics'}
iTestVar1: INT;
{attribute 'code_analysis_ui' := 'filter_in_results'}
iTestVar2: INT;
{attribute 'code_analysis_ui' := 'filter_in_conventions'}
FAILED_iTestVar3: INT;
END_VAR