Skip to main content

Refactoring

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.

Prozedur. Globale Variablen projektweit umbenennen
  1. Selektieren Sie den Namen einer globalen Variablen, zum Beispiel iGlobal.

  2. Wählen Sie im Kontextmenü den Befehl Refactoring → iGlobal umbenenen.

  3. 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 in iGlobalOK umbenannt.

  4. Klicken Sie auf OK.

    In Ihrem Projekt ist keine globale Variable iGlobal. Überall ist nun iGlobalOK.

Prozedur. Globale Variablen projektweit umbenennen (mit Ausnahme einer POU)
  1. Selektieren Sie den Namen einer globalen Variablen, zum Beispiel iGlobal.

  2. Wählen Sie im Kontextmenü den Befehl Refactoring → iGlobal umbenenen.

  3. 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 ist iGlobalTest aufgelistet.

  4. Positionieren Sie den Cursor in das rechte Fenster und öffnen Sie das Kontextmenü.

  5. 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 Variable iGlobalTest 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.

  1. Setzen Sie den Fokus in den Deklarationsteil der Funktion FCT.

  2. Wählen Sie Befehl Refactoring → Variable hinzufügen.

    Der Standarddialog zum Deklarieren einer Variablen erscheint.

  3. Deklarieren Sie Variable input_3 mit Gültigkeitsbereich VAR_INPUT und Datentyp INT. Schließen Sie den Dialog mit OK.

    Der Dialog Refactoring erscheint (siehe Abbildung unten). Die betroffenen Stellen sind gelb markiert. (1)+(2)

  4. Wählen Sie rechts oben die Option Eingänge mit Platzhaltertext hinzufügen. (3)

  5. 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 von FCT 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.

  6. Schließen Sie den Dialog Refactoring mit OK.

  7. Wählen Sie Befehl Bearbeiten → Suchen. Suchen Sie im Projekt nach „_REFACTOR_“, um die betroffenen Stellen zu überprüfen und entsprechend zu bearbeiten.

  8. 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.

_cds_img_refactoring_view.png

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

_cds_img_refactoring_in_cfc.png

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
  1. Setzen Sie den Cursor in diesen Deklarationsblock und drücken die rechte Maustaste, um das Kontextmenü zu öffnen.

  2. Wählen Sie den Befehl Refactoring → Variablen neu ordnen.

    Der Dialog Neu ordnen erscheint mit einer Liste der VAR_INPUT-Variablen.

  3. 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.

  4. Schließen Sie den Dialog mit OK.

    Der Dialog Refactoring erscheint. Die betroffenen Stellen sind gelb markiert. (Siehe Abbildung oben)

  5. 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.

  1. Wählen Sie den Befehl Tools → Optionen.

    Dialog Optionen öffnet sich.

  2. Wählen Sie die Kategorie Refactoring.

  3. 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.

  4. Doppelklicken Sie den Funktionsbaustein fb_A.

  5. Selektieren Sie in der Deklaration von fb_A eine Variable beispielsweise iA. Alternativ können Sie den Cursor vor oder in die Variable setzen.

  6. Geben Sie Bearbeiten → Variable deklarieren ein (Umschalt + F2).

    Der Dialog Variable deklarieren öffnet sich. Der Dialog enthält die Einstellungen von iA.

  7. Ändern Sie den Namen von iA nach iCounter_A.

  8. Die Option Änderungen mit Hilfe von Refactoring erscheint und ist aktiviert.

  9. Klicken Sie OK.

    Der Dialog Refactoring Umbenennen von iA in iCounterA öffnet sich. Dort sind alle von der Variablenumbenennung betroffenen Stellen markiert.

  10. Beenden Sie den Dialog mit OK.

    Die Änderungen werden übernommen.