Funktion: Der Befehl durchsucht den Programmcode des geöffneten CODESYS-Projekts nach kopiertem Code und öffnet die Ansicht „Ergebnisse Klonsuche“ zur Anzeige der gefundenen geklonten Codeblöcke. Dabei werden nur Codeblöcke ab einer bestimmten Größe als Klone berücksichtigt. Sehr kleine Codestücke werden nicht als Klone angezeigt werden.
Aufruf:
-
Menü „Erstellen Statische Analyse“
-
Kontextmenü „Statische Analyse“
Voraussetzung: Das CODESYS-Projekt ist geöffnet.
Zwei Codestellen gelten als Klone, wenn Sie folgende Eigenschaften haben:
-
Gleicher struktureller Aufbau
-
Variablen haben den gleichen Datentyp
-
Variablennamen dürfen unterschiedlich sein (Ausnahme: Komponentenzugriffe). Allerdings muss ein Bezeichner, der mehrfach im Code enthalten ist, in beiden Codestellen an der gleichen Position stehen.
-
Literale haben den gleichen Datentyp
-
Literale dürfen unterschiedlich sein. Ein Literal, das mehrfach im Code auftaucht, muss in beiden Codestellen an der gleichen Position auftauchen.
|
Registerkarte zur Anzeige des Suchergebnisses
|
|
In der Registerkarte werden die Codeklone in einer Baumansicht dargestellt und Befehle und Filtermöglichkeiten zur Verfügung gestellt. Als Wurzelknoten wird das erste Vorkommen eines Duplikats aus der Menge der Duplikate genommen. Durch die Hintergrundfarbe der Kindknoten wird dargestellt, ob der Code sich unterscheidet oder völlig identisch ist. Gleiche Farben bedeuten dabei "gleicher Code". Die Inhalte der Baumansicht sind nach der Anzahl Anweisungen des duplizierten Codes absteigend sortiert. |
Befehle und Filter in der Registerkarte |
|
„Submodule/Klon“ |
Anzahl der Submodule (Anweisungen) in dem Codeblock Wenn die Anzahl der Submodule kleiner als 20 ist, wird der Codeklon nicht berücksichtigt |
„Filter nach Objekt“ |
Eingabefeld für ein „Objekt“, nach dem die Auflistung der Klone gefiltert wird |
„Selektierte Klone anzeigen“ |
Voraussetzung: Zwei Kindknoten des gleichen Elternknotens sind selektiert. Die beiden Programmierobjekte werden im oberen Bereich der Ansicht zum Vergleich angezeigt. Dabei werden die Codeduplikate markiert und Unterschiede (zum Beispiel unterschiedliche Variablennamen) durch eine andere Farbe hervorgehoben. |
Auflistung der Codeklone |
Spalten
Ein Doppelklick auf einen Kindknoten öffnet das entsprechende Programmierobjekt, dort ist der duplizierte Codeblock selektiert. |
Siehe auch
-
linktarget doesn't exist but @y.link.required='true'