Instrucciones Pragma para Code Analysis

Descripción general

Con las instrucciones Pragma, es posible decidir si se debe tener en cuenta el código fuente en el análisis de código.

Por el contrario, las listas de bloqueo se utilizan para filtrar elementos después de la ejecución del análisis. El resultado es el mismo.

Con las instrucciones Pragma puede:

  • Marcar código fuente (por ejemplo, funciones, programas, bloques de funciones, variables, etc.) para que lo ignore el análisis de código (caso de uso 1).

  • Marcar código fuente para filtrar resultados que aparezcan solo en los resultados de la Tabla de convenciones, los resultados de la Tabla de métricas o la Vista de dependencias (caso de uso 2).

    Consulte también el capítulo Lista de bloqueo.

Caso de uso 1

El código que no debe analizarse en general se puede marcar con la instrucción Pragma ignore. Los elementos que se marcan de esta forma no forman parte del modelo de datos de análisis.

Atributo

Descripción

{attribute 'code_analyzer' := 'ignore'}

  • Marca una POU o una variable para que se ignoren.

  • Funciona recursivamente (por ejemplo, las variables que contiene la POU también se ignoran, o se ignoran los métodos situados bajo un bloque de funciones).

  • La prioridad más alta (en comparación con el atributo 'public_only').

attribute 'code_analyzer' := 'public_only'}

  • Marca una POU para tener en cuenta únicamente los elementos públicos (VarIn, VarOut, VarInOut, propiedades públicas, métodos públicos). Los demás elementos se ignoran.

  • Funciona recursivamente (por ejemplo, los métodos situados debajo de un bloque de funciones se gestionan de la misma forma que el bloque de funciones).

Caso de uso 2

El código que no se puede modificar, pero aparece en resultados de convenciones o métricas, se puede marcar para ocultarlo en estas listas de resultados.

Atributo

Descripción

{attribute 'code_analysis_ui' := 'filter_in_results'}

  • Marca una POU o una variable para que se filtre en los resultados (Tabla de convenciones, Tabla de métricas y Vista de dependencias).

  • No funciona recursivamente.

{attribute 'code_analysis_ui' := 'filter_in_conventions'}

  • Marca una POU o una variable para que se filtre en los resultados de la Tabla de convenciones (desde la IU o la API de automatización).

  • No funciona recursivamente.

{attribute 'code_analysis_ui' := 'filter_in_metrics'}

  • Marca una POU o una variable para que se filtre en los resultados de la Tabla de métricas (desde la IU o la API de automatización).

  • No funciona recursivamente.

{attribute 'code_analysis_ui' := 'filter_in_dependency_view'}

  • Marca una POU o una variable para que se filtre en la Vista de dependencias (cuadro de diálogo Seleccionar y añadir).

  • No funciona recursivamente.

Ejemplos

Ignorar una variable pública

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

    i_iPublicVar2: INT;
END_VAR
VAR
    iPrivateVar2: INT;
END_VAR

Tener en cuenta solo los elementos públicos

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

Filtrar (POU) en los resultados

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

Filtrar (variable) en los resultados de métricas o convenciones

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