La fonction d'analyse statique permet de vérifier si le code source d'un projet respecte certaines directives de codage avant que le projet soit téléchargé sur le système cible. Elle repose sur le même principe que l'outil d'analyse lint.
Vous définissez le jeu de règles souhaité dans la boîte de dialogue .
Les écarts par rapport aux règles sont signalés par des messages de type SA
<nombre>.
Vous pouvez utiliser des instructions pragma pour exclure certaines parties du code de la vérification.
Condition préalable : Les règles doivent être activées dans les
.{analysis ...}
Le pragma {analysis ...}
permet de désactiver des règles de codage spécifiques pour les lignes de code suivantes. A cet effet, placez-le sur la ligne située au-dessus du code concerné (désactivation) et sur la ligne située au-dessous du code concerné (réactivation) ; le ou les numéros de règle à désactiver doivent être indiqués, précédés d'un signe moins (–
) pour la désactivation ou d'un signe plus (+
) pour la réactivation. Selon la règle, le pragma pourra être utilisé dans la partie déclaration ou dans le code d'implémentation de l'objet de programmation.
Syntaxe
{analysis <sign><rule number>|,<other combinations of signs and rules, comma-separated>}
-<rule number>
: Désactiver la règle SA<rule number>.
+<rule number>
: Activer la règle SA<rule number>.
Exemple
La règle 24 est désactivée pour deux lignes (il est donc inutile d'écrire nTest:=DINT#99
, par exemple), puis réactivée :
{analysis -24}
nTest := 99;
iVar := INT#2;
{analysis +24}
Procédure pour définir plusieurs règles :
{analysis -10, -24, -18}
{attribute 'analysis' := '...'}
L'utilisation de l'attribut {attribute 'analysis' := '<sign><rule number>'}
dans la partie déclaration permet d'activer ou de désactiver des règles spécifiques pour un objet de programmation global :
Syntaxe
{attribute 'analysis' := '<sign><rule number>|,<further rule numbers separated by commas>'}
Exemple
Les règles SA0033 et SA0031 sont désactivées pour l'intégralité de la structure :
{attribute 'analysis' := '-33, -31'}
TYPE My_Structure :
STRUCT
iLocal : INT;
uiLocal : UINT;
udiLocal : UDINT;
END_STRUCT
END_TYPE
La règle SA0100 est désactivée pour le tableau :
{attribute 'analysis' := '-100'}
big: ARRAY[1..10000] OF DWORD;