Skip to main content

Analizar código estáticamente

También puede hacer que su código fuente sea analizado estáticamente ("linten") durante la generación del código. Determina si su código fuente sigue las pautas de codificación que estableció, en la línea de la herramienta de análisis "lint".

  • en diálogo configuración del proyecto bajo la categoría Luz de análisis estático habilite las reglas que se verificarán. La verificación en sí se realiza automáticamente con cada generación de código, por ejemplo, cuando ejecuta el comando Construir → Generar código Seleccione. Si se detectan desviaciones de las reglas, se clasifican como mensajes de error de la categoría Traducir que se muestra en la ventana de mensajes. Los errores informados tienen un prefijo: SA<Zahl>.

Importante

Para análisis de código estático con Luz de análisis estático sólo se comprueba el código de aplicación del proyecto. Las bibliotecas están excluidas del examen.

Variables de una GVL en la vista POU no están necesariamente marcados: si tiene un proyecto con varias aplicaciones, solo se comprueban los objetos bajo la aplicación actualmente activa. Si solo tiene una aplicación, también se verifican los objetos en el grupo general de POU.

Sugerencia

Luz de análisis estático solo se incluye con un conjunto reducido de reglas en el sistema de desarrollo estándar. Un conjunto ampliado de reglas, convenciones de nomenclatura adicionales y métricas están disponibles cuando instala el complemento CODESYS Static Analysis instalar.

Excluir líneas de código en implementaciones con pragma del análisis estático

Puedes con la ayuda de pragma {analysis ...} Marca el código para que no se comprueben las reglas especificadas. En consecuencia, las líneas de código marcadas de esta manera no se analizan estáticamente. Durante la prueba, el código marcado se ignora.

Sintaxis:

{analysis <Vorzeichen><Regelnummer>|,<weitere Kombinationen von Vorzeichen und Regelnummern, kommasepariert>}

-<Regelnummer>: Desactive la comprobación de la regla SA<número de regla>.

+<Regelnummer>: Activar verificación de regla SA<número de regla>.

Excluir código de implementación

Requisito: Tienes el diálogo configuración del proyecto reglas habilitadas.

  1. Agrega el pragma {analysis -<number>} sobre la línea de código que contiene el código que no desea verificar por primera vez. Por ejemplo, para la regla SA0024

    La línea de código es la primera línea del fragmento de código que no se compara con la regla 24.

  2. Agrega el pragma {analysis +<number>} debajo de la línea de código que contiene el código que no se debe verificar por primera vez.

    Ejemplo: Para la regla SA0024

    La línea de código anterior es la última línea del fragmento de código que no se compara con la regla 24.

ejemplo 22. Ejemplo: Ignorar literal sin tipo
{analysis -24}
nTest := 99;
iVar := INT#2;
{analysis +24}

La regla SA0024: Literales sin tipo está deshabilitado para 2 filas. No se arroja ningún error, aunque el código no se corrige a: nTest := DINT#99;



ejemplo 23. Ejemplo: ignorar varias reglas
{analysis -10, -24, -18}
...
{analysis +10, +24, +18}

SA0010: Matrices con un solo componente

SA0018: Accesos a bits inusuales

SA0024: Literales sin tipo



Sugerencia

Sin embargo, puede gobernar SA0004: Acceso de escritura múltiple a la salida no deshabilite a través de pragma.

Excluir objetos de programación del análisis estático con pragma

Sintaxis:

{attribute 'analysis' := '-<rule number>[,<other negative rule numbers, comma-separated>]'}

Si incluye el atributo pragma en la parte de declaración de un objeto de programación, las reglas especificadas se excluyen para todo el objeto de programación. Si se excluyen varias reglas, las reglas deben especificarse con un signo menos y un número, separados por comas. No se necesita una declaración de pragma para el encendido.

ejemplo 24. ejemplo
{attribute 'analysis' := '-33, -31'}
TYPE LocalData :
STRUCT
        iLocal : INT;
        uiLocal : UINT;
        udiLocal : UDINT;
END_STRUCT
END_TYPE

Las reglas SA0033 y SA0031 se utilizan en la estructura LocalData ignorado

{attribute 'analysis' := '-100'}
big: ARRAY[1..10000] OF DWORD;

La regla SA0100 se aplica a la matriz big ignorado