Skip to main content

Analyser le code de manière statique

Vous pouvez également faire analyser statiquement votre code source ("linten") lors de la génération du code. Il détermine si votre code source suit les directives de codage que vous avez définies - à l'instar de l'outil d'analyse "lint".

  • En dialogue paramètres du projet sous la catégorie Lumière d'analyse statique activer les règles qui seront vérifiées. La vérification elle-même a alors lieu automatiquement à chaque génération de code, par exemple lorsque vous exécutez la commande Construire → Générer du code Sélectionner. Si des écarts par rapport aux règles sont détectés, ceux-ci sont classés comme messages d'erreur de la catégorie Traduire affiché dans la fenêtre des messages. Les erreurs signalées ont un préfixe : SA<Zahl>.

Important

Pour l'analyse de code statique avec Lumière d'analyse statique seul le code applicatif du projet est vérifié. Les bibliothèques sont exclues de l'examen.

Variables d'un GVL dans la vue POU ne sont pas nécessairement cochés : Si vous avez un projet avec plusieurs applications, seuls les objets sous l'application actuellement active sont cochés. Si vous n'avez qu'une seule application, les objets du pool général de POU sont également vérifiés.

Astuce

Lumière d'analyse statique n'est inclus qu'avec un ensemble réduit de règles dans le système de développement standard. Un ensemble étendu de règles, des conventions de dénomination supplémentaires et des métriques sont disponibles lorsque vous installez le module complémentaire CODESYS Static Analysis à installer.

Exclure les lignes de code dans les implémentations avec pragma de l'analyse statique

Vous pouvez avec l'aide de pragma {analysis ...} Marquez le code afin que les règles spécifiées ne soient pas vérifiées. Par conséquent, les lignes de code ainsi marquées ne sont pas analysées statiquement. Lors des tests, le code marqué est ignoré.

Syntaxe:

{analysis <Vorzeichen><Regelnummer>|,<weitere Kombinationen von Vorzeichen und Regelnummern, kommasepariert>}

-<Regelnummer>: désactive la vérification de la règle SA<numéro de règle>.

+<Regelnummer>: Activer la vérification de la règle SA<numéro de règle>.

Exclure le code d'implémentation

Prérequis : Vous disposez de la boîte de dialogue paramètres du projet règles activées.

  1. Ajouter le pragma {analysis -<number>} au-dessus de la ligne de code qui contient du code que vous ne voulez pas vérifier pour la première fois. Par exemple, pour la règle SA0024

    La ligne de code est la première ligne de l'extrait de code qui n'est pas vérifiée par rapport à la règle 24.

  2. Ajouter le pragma {analysis +<number>} sous la ligne de code qui contient du code à ne pas vérifier pour la première fois.

    Exemple : Pour la règle SA0024

    La ligne de code ci-dessus est la dernière ligne de l'extrait de code qui n'est pas vérifiée par rapport à la règle 24.

Exemple 22. Exemple : Ignorer le littéral non typé
{analysis -24}
nTest := 99;
iVar := INT#2;
{analysis +24}

La règle SA0024 : Littéraux non typés est désactivé pour 2 lignes. Aucune erreur n'est renvoyée, bien que le code ne soit pas corrigé : nTest := DINT#99;



Exemple 23. Exemple : Ignorer plusieurs règles
{analysis -10, -24, -18}
...
{analysis +10, +24, +18}

SA0010 : Tableaux avec un seul composant

SA0018 : Accès inhabituels aux bits

SA0024 : Littéraux non typés



Astuce

Cependant, vous pouvez régner SA0004: Accès en écriture multiple à la sortie ne pas désactiver via pragma.

Exclure les objets de programmation de l'analyse statique avec pragma

Syntaxe:

{attribute 'analysis' := '-<rule number>[,<other negative rule numbers, comma-separated>]'}

Si vous incluez l'attribut pragma dans la partie déclaration d'un objet de programmation, les règles spécifiées sont exclues pour l'ensemble de l'objet de programmation. Si plusieurs règles sont exclues, les règles doivent être séparées par une virgule avec un signe moins et un chiffre. Une instruction pragma pour la mise sous tension n'est pas nécessaire.

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

Les règles SA0033 et SA0031 sont utilisées dans la structure LocalData ignoré.

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

La règle SA0100 est appliquée au tableau big ignoré.