Pragma-Anweisungen für die Maschinencodeanalyse

 

Pragma-Anweisungen für die Maschinencodeanalyse

Überblick

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 Analyseaus­fü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.

Anwendungsfall 1

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).

Anwendungsfall 2

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.

Beispiele

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