Static Analysis Light

Présentation générale

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 Paramètres de projet > Analyse statique Light.

NOTE : la vérification a lieu automatiquement à chaque génération de code.

Les écarts par rapport aux règles sont signalés par des messages de type Compiler dans l'affichage Messages. Le nombre d'erreurs est indiqué comme suit : SA<nombre>.

NOTE : l'analyse n'est effectuée que dans le code de l'application du projet actuel. Les bibliothèques ne sont pas concernées.
NOTE : Pour les variables GVL : Si le projet comprend plusieurs applications, la vérification s'applique uniquement aux objets de l'application active. Si le projet ne contient qu'une application, les objets dans le pool de POU sont également vérifiés.

Pragma et attribut pour la fonction Static Analysis Light

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 Paramètres du projet.

NOTE : Règle SA0004 : il est impossible de retirer plusieurs accès en écriture pour une sortie via un pragma.

Pragma {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}

Attribut {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;