SA0160: Llamadas recursivas
Detecta llamadas recursivas en acciones, métodos y propiedades de bloques de funciones. También detecta posibles recurrencias de llamadas de funciones virtuales y llamadas de interfaz.
Justificación: Las recurrencias conducen a un comportamiento no determinista y, por lo tanto, son una fuente de errores.
Importancia: Media
Regla PLCopen: CP13
ejemplo 118. Ejemplo
El siguiente método Call
está asignado al bloque de función FB_Test
:
FUNCTION_BLOCK FB_Test VAR bParameter: BOOL; END_VAR
METHOD Call : BOOL VAR_INPUT END_VAR
Call := THIS^.Call(); //SA0160
El programa PLC_PRG
llamadas FB_Test
:
PROGRAM PLC_PRG VAR fbTest : FB_Test; bValue : BOOL; END_VAR
bValue := fbTest.bParameter; fbTest.Call();
Salida en el Mensajes vista:
SA0160: Llamada recursiva detectada: 'PLC_PRG' -> 'FB_Test.Call' -> 'FB_Test.Call'