Mit dem Naming Check kann die Namenskonvention von Variablen überprüft werden.
z.B.: Hungarian notation [{prefix}] {datatype} {identifier}
float fRadius; bool bDoor; global int g_iThreadId; const int ICOUNT;
Standardmäßig werden die vom Add-On bereitgestellten Regeln verwendet.
Es ist aber auch möglich, diese Regeln zu ändern oder eigene Regeln für diese Prüfung zu erstellen. Siehe "Erstellen Sie Ihre eigene Regeldatei".
Eine Regeldatei besteht aus mehreren Regel-Tags. Jede Regel besteht aus einem Muster und einer Nachricht mit ID und Zusammenfassung.
<rule version="1">
<pattern>^[A-Z0-9_]+$</pattern>
<message>
<id>const</id>
<summary>The varibale name can not consist of lowercase letters.</summary>
</message>
</rule>
Definiert einen regulären Ausdruck, der auf den Variablennamen angewendet wird. Wenn der Ausdruck nicht übereinstimmt, wird ein Fehler zurückgegeben.
Beispiel regulärer Ausdruck
<pattern>^[A-Z0-9_]+$</pattern>
Erläuterung
Beispiel regulärer Ausdruck(Source https://regexr.com/)
^
Beginning. Matches the beginning of the string, or the beginning of a line if the multiline flag (m
) is enabled.[
Character set. Match any character in the set.
A-Z
Range. Matches a character in the range "A" to "Z" (char code 65 to 90). Case sensitive.0-9
Range. Matches a character in the range "0" to "9" (char code 48 to 57). Case sensitive._
Character. Matches a "_" character (char code 95). ]
+
Quantifier. Match 1 or more of the preceding token.$
End. Matches the end of the string, or the end of a line if the multiline flag (m
) is enabled.Ergebnis
Ausdruck | Variablen Typ und Name | Check |
---|---|---|
^[A-Z0-9_]+$ | const I_VAR | OK |
^[A-Z0-9_]+$ | const i_VAR | NOK |
^[A-Z0-9_]+$ | const I_Va | NOK |
Spezielles Muster für reguläre Ausdrücke
Mit diesen speziellen Mustern können Sie prüfen, ob der Variablenname spezielle Informationen enthält. Mehr von ihnen werden kommen ...
Muster | Beispiel |
---|---|
%fileName% | b_aesAutoRestart |
%fileName_allUpper% | b_AESAutoRestart |
%fileName_allLower% | b_aesAutoRestart |
Definiert die Nachricht, die ausgegeben wird, wenn der reguläre Ausdruck nicht übereinstimmt.
Die ID gibt an, auf welche Variablen der reguläre Ausdruck angewendet werden soll. Jede Variable hat einen Typ und ist für einen bestimmten Bereich verfügbar. Darüber hinaus kann es durch bestimmte Schlüsselwörter wie const modifiziert werden.
Für den Überprüfungsprozess werden die Kategorien jeder Variablen automatisch vom Tool bestimmt.
Die ID ist in folgende Kategorien unterteilt:
<modifier (const | nonconst)> <type (siehe Liste unten)> <scope (local | argument | global)>
e.g. <id>const int argument</id>
Spezielles Schlüsselwort für detaillierte Analysen
Siehe Liste der unterstützten Typen im folgenden Dokument
Bereich, in dem die Variable verwendet wird
Für type und *scope kann nur ein Wert definiert werden.
Entweder müssen alle drei Wertekategorien definiert werden oder nur für eine.
Beispiel für eine const int -Variable in einem global Bereich, wenn eine genau Regel verfügbar ist:
const global int g_IAES_VAR
<rule version="1">
<pattern> ... </pattern>
<message>
<id>const int global</id>
<summary> ... </summary>
</message>
</rule>
Diese Regel wird überprüft, da alle 3 Kategorien übereinstimmen.
Beispiel für eine const int -Variable in einem global Bereich, wenn keine genaue Regel verfügbar ist:
const global int g_IAES_VAR
<rule version="1">
<pattern> ... </pattern>
<message>
<id>const</id>
<summary> ... </summary>
</message>
</rule>
<rule version="1">
<pattern> ... </pattern>
<message>
<id>int</id>
<summary> ... </summary>
</message>
</rule>
<!-- A rule for "global" couldn't be found. -->
Die beiden bestehenden Regeln werden angewendet.
Achtung
Aufgrund dieser Logik ist es erforderlich, dass die einzelnen Kategorieregeln miteinander kombiniert werden können. Sonst würde es immer zu gewissen Kombinationsfehlern kommen.
Beispiele:
ID | Ausdruck | const int local | const int local | (nonconst) int global | (nonconst) int global |
---|---|---|---|---|---|
Variablen Name | IAES_VAR | iAES_VAR | g_i_CountFlags | i_CountFlags | |
const | ^[A-Z0-9_]+$ | OK | NOK | ignored | ignored |
int | ^[iI].* | OK | OK | OK | OK |
float | ^[fF].* | ignored | ignored | ignored | ignored |
local | "(.)(%fileName%_)(.)" | OK | OK | ignored | ignored |
global | ^[gG].* | ignored | ignored | OK | NOK |
Total | OK | NOK | OK | NOK |
Wenn eine eigene Regeldatei erforderlich ist, kann diese mit der Befehlszeilenoption "--naming-rule-file =" angegeben werden.
Die folgenden Werte sind derzeit für die type Kategorie verfügbar:
Types:
dyn variables
dyn_dyn variables