Skip to main content

Befehl: Klone finden

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.

Beachten Sie in diesem Zusammenhang auch Funktion extrahieren und die Anleitung Codeklone finden.

Aufruf:

  • Menü Erstellen → Statische Analyse

  • Kontextmenü Statische Analyse

Voraussetzung: Das CODESYS Static Analysis-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.

Tabelle 3. Ansicht Ergebnisse Klonsuche

_san_icon_info.png Zusammenfassung

Registerkarte zur Anzeige des Suchergebnisses

  • Anzahl gefundener geklonter Codeblöcke

  • Anzahl verglichener Anweisungen

  • Anzahl Anweisungen in geklontem Code

  • Klonanteil: Angabe in Prozent: Anzahl Anweisungen in geklontem Code / Anzahl verglichener Anweisungen

_san_icon_result.png Ergebnisse

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 _san_icon_result.pngErgebnisse

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

  • Beschreibung

  • Submodul/Klon

  • Objekt

  • Position

Ein Doppelklick auf einen Kindknoten öffnet das entsprechende Programmierobjekt, dort ist der duplizierte Codeblock selektiert.