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 parx
, suivi d'exactement un caractère dans le jeua-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:
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()19A_{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 fonctionFB_
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:
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.
Cliquez sur
.Clique le
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.
Cliquez sur
.Clique le
bouton.La boîte de dialogue de sélection de fichier s'ouvre. Sélectionnez l'un des fichiers CSA affichés ci-dessous.