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.
Define el conjunto de reglas deseado en el cuadro de diálogo (consulte EcoStruxure Machine Expert, Comandos de menú, Ayuda en línea).
Las desviaciones respecto de las reglas se muestran en forma de mensajes de categoría SA
<número>.
Las instrucciones pragmáticas permiten excluir partes de código de la comprobación.
Condición previa: Las reglas deben estar activadas en la
.{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 en la línea situada encima del código en cuestión (desactivación) y en la línea situada debajo de este (reactivación); para la desactivación, deberán especificarse los números de regla que se desean desactivar precedidos 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>|,<other combinations of signs and rules, comma-separated>}
-<rule number>
: Desactive la regla SA<número de regla>.
+<rule number>
: Active la regla SA<número de regla>.
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}
{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 SA0033 y SA0031 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 SA0100 se desactiva para la matriz:
{attribute 'analysis' := '-100'}
big: ARRAY[1..10000] OF DWORD;