Skip to main content

Définition des conventions de nommage

Dans le Paramètres d'analyse statique dialogue, sur le Conventions de nommage , définissez les conventions de nommage que vous suivrez dans votre code. Vous définissez des préfixes pour les identifiants de vos POU, variables et types de données en fonction de leurs étendues et qualificateurs.

Ensuite, vous pouvez laisser l'analyse statique vérifier la conformité des conventions de nommage.

Un guide pour cela : Vérification de la conformité aux conventions de dénomination définies

Définition des préfixes

Dans le Paramètres d'analyse statique dialogue, sur le Conventions de nommage , définissez les conventions de nommage dans le champ de saisie de l'onglet Préfixe colonne.

  • Caractère littéral

    Exemple:

    PRG_ dans Préfixes pour les POU, Préfixes pour le type de POU, PROGRAMME (102)

  • Plusieurs littéraux par entrée séparés par une virgule

    Syntaxe: <prefix> ( , <next prefix> )*

    Exemple:

    PRG_, PRG dans Préfixes pour les POU, Préfixes pour le type de POU, PROGRAMME (102)

  • Expression régulière RegEx qui définit un ensemble de préfixes

    Syntaxe: @ <expression>

    Exemples:

    @x[a-dA-D] définit un préfixe commençant par x, suivi d'exactement un caractère dans le jeu a-dA-D

    @[A-Za-z][A-Za-z][A-Za-z][A-Za-z0-9] définit un préfixe composé de quatre caractères : les trois premiers caractères sont des lettres et le quatrième caractère peut également être un chiffre.

Définition de préfixes pour les types de données combinables

Les types de données suivants sont basés sur des types de données standard, des types de données existants ou des blocs fonctionnels :

  • Aiguille: POINTER TO <basic type>

  • Référence: REFERENCE TO <basic type>

  • Déployer: ARRAY[ <lower index bound> .. <upper index bound> ] OF <basic type>

Ces types de données peuvent être imbriqués et mutuellement combinés. Quand le Préfixes récursifs pour les types de données combinables est sélectionnée, l'analyse statique attend des préfixes combinés de manière récursive pour les variables de ces types de données combinables. Les préfixes suivent la déclaration et correspondent aux conventions de nommage définies pour les types de données de base.

Exemple

Les conventions de dénomination suivantes ont été définies :

  • i dans Préfixes pour les variables, INT (26)

  • p dans Préfixes pour les variables, POINTEUR (26)

  • ref dans Préfixes pour les variables, RÉFÉRENCE (27)

  • struct dans Préfixes pour les variables, Ouvrage (32)

  • Préfixes récursifs pour les types de données combinables option: standard icon

Le code suivant ne respecte pas les conventions de dénomination et est difficile à lire.

PROGRAM plc1
VAR
        var1 : ARRAY[100..110] OF ARRAY[30..50] OF ARRAY[6..7] OF BOOL;
        var2 : ARRAY[1..3] OF INT;
        var3 : REFERENCE TO INT;
        iVar4 : INT;
        iVar5 : INT;
        var6 : ARRAY[1..3] OF INT := [11, 22, 33];
        var7 : POINTER TO ARRAY[1..3] OF INT;
        var8 : REFERENCE TO INT;
        var9 : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]);
        var0 : ARRAY[0..3] OF S_POLYGONLINE; // S_POLYGONLINE is a already defined structure
END_VAR

iVar4 := iVar4 + 1;
var8 REF= iVar4;
var1[100][30][6] := TRUE;
var9.aiPoint1[1] := 99;
var7 := ADR(var6);
var6[2] := 44;
iVar5 := var7^[2];
var0[0] := var9;

L'analyse statique signale les violations suivantes des conventions de dénomination :

  • NC0102 : Nom invalide 'plc1' : Préfixe attendu 'PRG_'

  • NC0014 : Nom de variable 'var0' non valide : préfixe 'astruct' attendu

  • NC0014 : Nom de variable 'var1' non valide : préfixe attendu 'aaax'

  • NC0014 : Nom de variable 'var2' non valide : préfixe 'ai' attendu

  • NC0014 : Nom de variable 'var3' non valide : préfixe 'refi' attendu

  • NC0014 : Nom de variable 'var6' non valide : préfixe 'ai' attendu

  • NC0014 : Nom de variable 'var7' non valide : préfixe 'pai' attendu

  • NC0014 : Nom de variable 'var8' non valide : préfixe 'refi' attendu

  • NC0014 : Nom de variable 'var9' non valide : préfixe 'struct' attendu

Définir des préfixes pour les variables d'un alias

Vous pouvez définir des préfixes pour les variables de type de données Alias comme un littéral avec l'espace réservé {datatype}. Ensuite, Static Analysis attend le préfixe du type de données de base au lieu de l'espace réservé.

le Combiner le préfixe de portée avec le préfixe de type de données l'option n'a aucun effet sur l'utilisation du préfixe {datatype}.

Exemple

Les conventions de dénomination suivantes ont été définies :

  • s dans Préfixes pour les variables, Préfixes pour les types, CHAÎNE()19

  • A_{datatype} dans Préfixes pour les variables, Alias (33)

Code

TYPE A_MESSAGE : STRING[50]; // base data type is STRING
END_TYPE

VAR
        A_sMessage_N1 : A_MESSAGE := 'Robot is running.';
        A_s_Message_N2 : A_MESSAGE := 'Robot has been finished.';
        As_Message_N3 : A_MESSAGE := 'Robot has been stopped.';
        AsMessage_N4 : A_MESSAGE := 'Error 3 has been occured.';
END_VAR

L'analyse statique signale la violation suivante de la convention d'attribution de noms :

  • NC0033 : Nom de variable invalide 'As_Message_N3' : préfixe attendu 'A_s'

  • NC0033 : Nom de variable invalide 'AsMessage_N4' : préfixe attendu 'A_s'

Définition de préfixes pour les propriétés

Vous pouvez définir le préfixe pour les POU de type de données PROPERTY comme un littéral avec l'espace réservé {datatype}. Ensuite, Static Analysis attend le préfixe du type de données de retour de la propriété au lieu de l'espace réservé.

le Combiner le préfixe de portée avec le préfixe de type de données l'option n'a aucun effet sur l'utilisation de l'espace réservé {datatype}.

Exemple

Les conventions de dénomination suivantes ont été définies :

  • fb dans Préfixes pour les variables, Préfixes pour les types, Instance de bloc fonction

  • FB_ dans Préfixes pour les POU, Préfixes pour le type de POU, BLOC FONCTION (103)

  • prop_{datatype} dans Préfixes pour les POU, Préfixes pour le type de POU, IMMOBILIER (107)

Code

FUNCTION_BLOCK blocka // Invalid function block name
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    iA : INT;
END_VAR
iA := iA + 1;

PROPERTY PUBLIC vara : INT // Invalid property name, return data type is INT
Get
        vara := iA;
Set
iA := vara;

PROGRAM plc1
VAR
        var10 : blocka; // Invalid variable name of typ function block
        iVar11: INT;
END_VAR

var10();
IF var10.vara > 500 THEN
        var10.vara := 0;
END_IF
iVar11 := var10.vara;

L'analyse statique signale la violation suivante des conventions de dénomination :

  • NC0102 : Nom invalide 'plc1' : Préfixe attendu 'PRG_'

  • NC0031 : Nom de variable 'var10' non valide : préfixe 'fb' attendu

  • NC0103 : Nom de variable invalide ''blocka' : préfixe attendu 'FB_'

  • NC0107 : Nom de variable invalide 'blocka.vara' : préfixe attendu 'prop_i'

Code selon les conventions de nommage

FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    iA : INT;
END_VAR
iA := iA + 1;

PROPERTY PUBLIC prop_iA : INT
Get
        prop_iA := iA;
Set
        iA := prop_iA;

PROGRAM PRG_PLC1
VAR
        fbA : FB_A;
        iVar11: INT;
END_VAR

fbA();
IF fbA.prop_iA > 500 THEN
        fbA.prop_iA := 0;
END_IF
iVar11 := fbA.prop_iA;

Définition des préfixes pour les structures

Vous pouvez définir un préfixe général pour les structures du projet dans Préfixes pour les DUT, Ouvrage (151). Vous pouvez également donner à une structure un préfixe spécial. Le préfixe spécial remplace alors le préfixe général.

Le préfixe spécial est défini dans la déclaration du type de données de la structure avec le pragma {attribute 'nameprefix' := <special prefix> '}. Commencez ensuite toutes les variables de cette structure avec ce préfixe <special prefix>.

Exemple

Les conventions de dénomination suivantes ont été définies :

  • struct dans Préfixes pour les variables, Ouvrage (32)

  • S_ dans Préfixes pour les DUT, Ouvrage (151)

  • Préfixes récursifs pour les types de données combinables: standard icon

Code

TYPE S_POLYGONLINE :
STRUCT
        aiStart : ARRAY[1..2] OF INT := [-99, -99];
        aiPoint1 : ARRAY[1..2] OF INT;
        aiPoint2 : ARRAY[1..2] OF INT;
        aiPoint3 : ARRAY[1..2] OF INT;
        aiPoint4 : ARRAY[1..2] OF INT;
        aiEnd : ARRAY[1..2] OF INT := [99, 99];
END_STRUCT
END_TYPE

{attribute 'nameprefix' := 'penta'} // Pragma to define a special prefix
TYPE S_PENTA EXTENDS S_POLYGONLINE :
STRUCT
        aiPoint5 : ARRAY[1..2] OF INT;
END_STRUCT
END_TYPE

PROGRAM PRG_Compute
VAR
        structPolygon : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]);
        structPentagon : S_PENTAGON := (aiStart:=[0,0], aiPoint1:=[1,1], aiPoint2:=[2,2], aiPoint3:=[3,3], aiPoint4:=[4,4], aiPoint5:=[5,5]);
        structLine0 : S_PENTA;
        pentaLine1 : S_PENTA;
        iXPoint: INT;
        aPoint0: ARRAY [1..2] OF INT;
        aPoint1: ARRAY [1..2] OF INT;
END_VAR

iXPoint := structPolygon.aiPoint1[1];
aPoint0 := structLine0.aiEnd;
aiPoint1 := pentaLine1.aiEnd;

L'analyse statique signale la violation suivante des conventions de dénomination :

  • Nom de variable non valide 'structLine0' : préfixe attendu 'penta'

Fournir d'autres CODESYS Static Analysis projets avec des conventions de nommage

Enregistrez vos conventions de dénomination dans un fichier CSA. Vous pouvez charger et utiliser ce fichier dans d'autres CODESYS Static Analysis projets.

Procédure. Enregistrement dans un fichier
  1. Cliquez sur Construire → Analyse statique → Paramètres.

  2. Clique le Sauvegarder bouton.

    Une boîte de dialogue de sélection de fichier s'ouvre. Là, vous pouvez stocker les conventions de dénomination dans un fichier sous n'importe quel nom avec l'extension de fichier CSA.

Procédure. Chargement d'un fichier avec des conventions de nommage
  1. Cliquez sur Construire → Analyse statique → Paramètres.

  2. Clique le Charger bouton.

    La boîte de dialogue de sélection de fichier s'ouvre. Sélectionnez l'un des fichiers CSA affichés ci-dessous.