Im Allgemeinen ist Refactoring eine Methode, bereits geschriebene Software im Design zu verbessern, ohne ihr Verhalten zu ändern.
Refactoring in CODESYS bietet Funktionalitäten zum Umbenennen von Objekt- und Variablennamen und zum Aktualisieren von Bausteinanschlüssen. Sie können alle Verwendungsstellen umbenannter Objekte und Variablen anzeigen lassen und diese dann gesamt oder einzeln ausgewählt umbenennen. Zusätzlich können Sie in „Tools Optionen“ konfigurieren, ob und an welchen Stellen CODESYS Sie automatisch zum Refactoring auffordert.
Globale Variablen umbenennen
Voraussetzung: Sie haben ein Projekt geöffnet, das mindestens einen Funktionsbaustein
„FB“ und eine globale Variablenliste beinhaltet. Die globale Variablenliste „GVL“ ist in ihrem Editor geöffnet und enthält die Deklaration einer Variablen, beispielsweise
iGlobal
. „FB“ verwendet iGlobal
.
Globale Variablen projektweit umbenennen
-
Selektieren Sie den Namen einer globalen Variablen, zum Beispiel
iGlobal
. -
Wählen Sie im Kontextmenü den Befehl „Refactoring iGlobal umbenenen“
-
Geben Sie im Dialog „Umbennen“ in das Eingabefeld „Neuer Name“ einen neuen Namen ein, zum Beispiel
iGlobalOK
und klicken Sie auf „OK“.Der Dialog „Refactoring “ öffnet sich. Im linken Fenster, im Gerätebaum, sind die Objekte „GVL“ und „FB“ farblich rot gekennzeichnet und gelb hinterlegt. Im rechten Fenster ist „FB“ in seinem Editor geöffnet und
iGlobal
ist bereits iniGlobalOK
umbenannt. -
Klicken Sie auf „OK“.
-
In Ihrem Projekt ist keine globale Variable
iGlobal
. Überall ist nuniGlobalOK
.
Globale Variablen projektweit umbenennen (mit Ausnahme einer POU)
-
Selektieren Sie den Namen einer globalen Variablen, zum Beispiel
iGlobal
. -
Wählen Sie im Kontextmenü den Befehl „Refactoring iGlobal umbenenen“
-
Geben Sie im Dialog „Umbennen“ in das Eingabefeld „Neuer Name“ einen neuen Namen ein, zum Beispiel
iGlobalTest
und klicken Sie auf „OK“.Der Dialog „Refactoring “ öffnet sich. Im linken Fenster, im Gerätebaum, sind die Objekte „GVL“ und „FB“ farblich rot gekennzeichnet und gelb hinterlegt. Im rechten Fenster ist der Funktionsbaustein „FB “ in seinem Editor geöffnet. Statt
iGlobal
istiGlobalTest
aufgelistet. -
Positionieren Sie den Cursor in das rechte Fenster und öffnen Sie das Kontextmenü.
-
Wählen Sie den Befehl „Dieses Objekt verwerfen“ und klicken Sie auf „OK“
In Ihrem Projekt ist die globale Variable
iGlobal
in „FB“ vorhanden. In den Objekten, in denen die Variable sonst vorkam, ist nun die VariableiGlobalTest
angegeben.Im Meldungsfenster erscheint die Fehlermeldung, dass der Bezeichner
iGlobal
nicht definiert ist.
Eingangsvariablen hinzufügen und entfernen
Sie können im Deklarationsteil von Bausteinen über Refactoringbefehle Eingangs- oder Ausgangsvariablen hinzufügen oder entfernen. An den Verwendungsstellen/Aufrufstellen der Bausteine aktualisiert CODESYS entsprechend, wobei Sie dies pro Verwendungsstelle akzeptieren oder verwerfen können. Sie erhalten dazu den Dialog „Refactoring“.
Voraussetzung: Sie haben die POU FCT
des Typs Funktion im Editor geöffnet. Die Funktion besitzt bereits Eingangsvariablen
input1
und input2
und inputx
. Sie wird in den Programmen PLC_PRG
und POU
aufgerufen.
-
Setzen Sie den Fokus in den Deklarationsteil der Funktion FCT.
-
Wählen Sie Befehl „Refactoring Variable hinzufügen“.
Der Standarddialog zum Deklarieren einer Variablen erscheint.
-
Deklarieren Sie Variable
input_3
mit GültigkeitsbereichVAR_INPUT
und DatentypINT
. Schließen Sie den Dialog mit „OK“.Der Dialog „Refactoring“ erscheint (siehe Abbildung unten). Die betroffenen Stellen sind gelb markiert. (1)+(2)
-
Wählen Sie rechts oben die Option „Eingänge mit Platzhaltertext hinzufügen“. (3).
-
Setzen Sie im linken Fenster den Cursor auf einen der gelb hinterlegten Objekte, beispielsweise
PLC_PRG
. Wählen Sie im Kontextmenü den Befehl „Das gesamte Projekt annehmen“, um die neue Variable an den Verwendungsstellen vonFCT
im gesamten Projekt hinzuzufügen.Im rechten Fenster sehen Sie die Änderung im Implementierungsteil von
PLC_PRG
: Platzhalter_REFACTOR_
erscheint an der Stelle, an der die neue Variable eingefügt wurde. -
Schließen Sie den Dialog „Refactoring“ mit „OK“.
-
Wählen Sie Befehl „Bearbeiten Suchen“. Suchen Sie im Projekt nach "_REFACTOR_", um die betroffenen Stellen zu überprüfen und entsprechend zu bearbeiten.
-
Hinweis: Alternativ können Sie die neue Variable direkt mit einem gewünschten Initialisierungswert einfügen, ohne zuerst mit einem Platzhalter zu arbeiten. In diesem Fall wählen Sie bei Schritt 4 die Option ":.mit folgendem Wert hinzufügen" und tragen den Wert rechts davon ein.

Beispiel für neue Variable mit Platzhaltertext in einem CFC-Baustein:

Beachten Sie auch die Möglichkeit, Variablen über Refactoring zu entfernen.
Variablen in der Deklaration neu anordnen
Im Deklarationsteil von Bausteinen können Sie über Refactoring die Reihenfolge von
Deklarationen verändern. Dies ist möglich bei Deklarationen der Gültigkeitsbereiche
VAR_INPUT
, VAR_OUTPUT
oder VAR_IN_OUT
.
Voraussetzung: Sie haben den Deklarationsteil einer POU geöffnet, der beispielsweise folgende Deklarationen enthält:
VAR_INPUT invar2 : INT; invar1 : INT; in : DUT; bvar : BOOL; invar3 : INT; END_VAR
-
Setzen Sie den Cursor in diesen Deklarationsblock und drücken die rechte Maustaste, um das Kontextmenü zu öffnen.
-
Wählen Sie den Befehl „Refactoring Variablen neu ordnen“.
Der Dialog „Neu ordnen“ erscheint mit einer Liste der
VAR_INPUT
-Variablen. -
Selektieren Sie beispielsweise den Eintrag „invar1 : INT;“ und ziehen ihn mit der Maus vor den Eintrag „invar2.“.
Die Deklaration von
invar1
steht jetzt an oberster Stelle. -
Schließen Sie den Dialog mit „OK“.
Der Dialog „Refactoring“ erscheint. Die betroffenen Stellen sind gelb markiert (siehe Abbildung oben).
-
Bestätigen Sie mit „OK“, um die neue Reihenfolge in den Baustein zu übernehmen.
Variablendeklaration ändern und Refactoring automatisch anwenden
Sie werden in der Deklaration beim Umbenennen von Variablen (mit Hilfe der Autodeklaration) von Refactoring unterstützt.
Voraussetzung: Funktionsbaustein fb_A
.
-
Wählen Sie den Befehl „Tools Optionen“.
Dialog „Optionen“ öffnet sich.
-
Wählen Sie die Kategorie „Refactoring“.
-
Aktivieren Sie unter „Autodeklaration“ die Optionen „Beim Umbenennen von Variablen“ und „Für das Hinzufügen oder Entfernen von Variablen, oder für das Ändern des Namensraums“.
-
Doppelklicken Sie den Funktionsbaustein
fb_A
. -
Selektieren Sie in der Deklaration von
fb_A
eine Variable beispielsweiseiA
. Alternativ können Sie den Cursor vor oder in die Variable setzen. -
Geben Sie „Bearbeiten Variable deklarieren“ ein ([Umschalt]+[F2]).
Der Dialog „Variable deklarieren“ öffnet sich. Der Dialog enthält die Einstellungen von
iA
. -
Ändern Sie den Namen von
iA
nachiCounter_A
. -
Die Option „Änderungen mit Hilfe von Refactoring“ erscheint und ist aktiviert.
-
Klicken Sie „OK“.
Der Dialog „Refactoring“ „Umbenennen von iA in iCounterA“ öffnet sich. Dort sind alle von der Variablenumbenennung betroffenen Stellen markiert.
-
Beenden Sie den Dialog mit „OK“.
Die Änderungen werden übernommen.