Instructions Pragma pour Analyse de code

Présentation

Les instructions Pragma sont utilisées pour décider si le code source doit être pris en compte dans l'analyse de code.

Les listes de blocage, elles, permettent d'exclure des éléments une fois l'analyse exécutée. L'effet obtenu est identique.

Avec des instructions Pragma, vous pouvez :

  • marquer les éléments du code source (fonctions, programmes, blocs fonction, variables, etc.) à ignorer lors de l'analyse du code (cas d'utilisation 1) ;

  • marquer les éléments du code source qui seront filtrés dans les résultats du Tableau des conventions/Tableau des mesures ou dans la Vue de dépendance (cas d'utilisation 2).

    Voir également le chapitre BlockList.

Cas d'utilisation 1

Le code qui ne doit pas être analysé peut être marqué à l'aide de l'instruction Pragma ignore. Les éléments ainsi marqués ne sont pas inclus dans le modèle de données d'analyse.

Attribut

Description

{attribute 'code_analyzer' := 'ignore'}

  • Marque un POU ou une variable à ignorer.

  • Fonctionne en mode récursif (par exemple, les variables du POU ou les méthodes d'un bloc fonction sont également ignorées).

  • Priorité maximale (comparé à l'attribut 'public_only').

attribute 'code_analyzer' := 'public_only'}

  • Marque un POU pour tenir compte uniquement des éléments publics (VarIn, VarOut, VarInOut, propriétés publiques, méthodes publiques). Les autres éléments sont ignorés.

  • Fonctionne en mode récursif (par exemple, les méthodes d'un bloc fonction sont traitées comme le bloc fonction).

Cas d'utilisation 2

Le code non modifiable qui apparaît dans les résultats associés aux conventions et/ou aux métriques peut être marqué afin d'être masqué dans ces listes.

Attribut

Description

{attribute 'code_analysis_ui' := 'filter_in_results'}

  • Marque un POU ou une variable comme étant à filtrer dans les résultats (Tableau des conventions, Tableau des mesures et Vue de dépendance).

  • Fonctionne en mode non récursif.

{attribute 'code_analysis_ui' := 'filter_in_conventions'}

  • Marque un POU ou une variable comme étant à filtrer dans les résultats du Tableau des conventions (via l'interface utilisateur ou l'API de création de scripts).

  • Fonctionne en mode non récursif.

{attribute 'code_analysis_ui' := 'filter_in_metrics'}

  • Marque un POU ou une variable comme étant à filtrer dans les résultats du Tableau des mesures (via l'interface utilisateur ou l'API de création de scripts).

  • Fonctionne en mode non récursif.

{attribute 'code_analysis_ui' := 'filter_in_dependency_view'}

  • Marque un POU ou une variable à filtrer dans la Vue de dépendance (boîte de dialogue Sélectionner et ajouter).

  • Fonctionne en mode non récursif.

Exemples

Ignorer une variable publique

METHOD PUBLIC PublicMethod
VAR_INPUT
    {attribute 'code_analyzer' := 'ignore'}
    i_iPublicButIgnoredVar: INT;

    i_iPublicVar2: INT;
END_VAR
VAR
    iPrivateVar2: INT;
END_VAR

Tenir compte des éléments publics uniquement

{attribute 'code_analyzer' := 'public_only'}
FUNCTION_BLOCK FB_PublicOnlyTest1
VAR_INPUT
    i_iPublicVar: INT;
END_VAR
VAR
    iPrivateVar: INT;
END_VAR

Filtrer (un POU) dans les résultats

{attribute 'code_analysis_ui' := 'filter_in_results'}
PROGRAM SR_FilterInResultsTest1
VAR
END_VAR

Filtrer (une variable) dans les résultats associés aux métriques et/ou aux conventions

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