Static Analysis Light

Descripción general

La función de análisis estático (Static Analysis) comprueba que el código fuente de un proyecto no se desvíe de determinadas directrices de creación de código antes de descargar el proyecto en el sistema de destino. Sigue la idea básica de la herramienta de análisis lint.

El conjunto de reglas deseado se define en el cuadro de diálogo Configuración del proyecto > Static Analysis Light.

NOTA: La comprobación se ejecuta automáticamente cada vez que se genera código.

Las desviaciones respecto de las reglas se muestran en forma de mensajes de categoría Compilación en la vista Mensajes. Los números de error se muestran con el formato SA<número>.

NOTA: El análisis solamente se realiza en el código de aplicación del proyecto actual. Las bibliotecas no se tienen en cuenta.

NOTA: En el caso de variables GVL, si el proyecto contiene diversas aplicaciones, solo se comprobarán los objetos situados debajo de la aplicación que esté activa en esos momentos. Si el proyecto contiene una sola aplicación, también se comprobarán los objetos que se encuentren en la colección de POU.

Construcción pragmática y atributo para Static Analysis Light

Las instrucciones pragmáticas permiten excluir partes de código de la comprobación.

Condición previa: las reglas deben estar activadas en la Configuración del proyecto.

NOTA: El acceso de escritura múltiple en la salida no puede desactivarse a través de una construcción pragmática.

Construcción pragmática {analysis ...}

La construcción pragmática {analysis ...} permite desactivar determinadas reglas de creación de código para las líneas de código subsiguientes. Para ello, deberá colocarla dos veces, una en la línea situada encima del código en cuestión (desactivación), y otra en la línea situada debajo de este (reactivación); para la desactivación, deberá especificarse cada uno de los números de regla que se desean desactivar precedido por un signo menos (), mientras que para la reactivación deberá hacerse lo mismo con un signo más (+). En función de la regla, la construcción pragmática podrá utilizarse en la parte de la declaración o en la de implementación de un objeto de programación.

Sintaxis

{analysis <sign><rule number>|,<further sign / rule number combinations separated by commas>}

Ejemplo

La regla 24 se desactiva para dos líneas (lo que significa que, en este caso, no es necesario escribir, por ejemplo, nTest:=DINT#99), y luego se reactiva:

{analysis -24}
nTest := 99;
iVar := INT#2;
{analysis +24}

Especificación de diversas reglas:

{analysis -10, -24, -18}

Atributo {attribute 'analysis' := '...'}

Utilice el atributo {attribute 'analysis' := '<sign><rule number>'} de la parte de declaración para activar o desactivar determinadas reglas para todo un objeto de programación:

Sintaxis

{attribute 'analysis' := '<sign><rule number>|,<further rule numbers separated by commas>'}

Ejemplo

Las reglas 33 y 31 se desactivan para toda la estructura:

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

La regla 100 se desactiva para la matriz:

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