Skip to content

Commit

Permalink
Merge pull request #47 from ABAP-Pete25/main
Browse files Browse the repository at this point in the history
Adding ABAP - Cleaner to the Leitffaden  ( closes #42 fixes #45)
  • Loading branch information
ABAP-Pete25 authored Jan 2, 2024
2 parents 65536f0 + 9bdb8dd commit 69ed88b
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 5 deletions.
9 changes: 7 additions & 2 deletions docs/motivation-for-adt/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: page
title: Motivation für ADT
permalink: /motivation-for-adt/
prev_page_link: /introduction-eclipse-adt/
prev_page_link: /introduction-eclipse/
prev_page_title: Einleitung Eclipse und ADT
next_page_link: /working-with-adt/
next_page_title: Arbeiten mit ADT
Expand Down Expand Up @@ -69,6 +69,8 @@ Die Wartbarkeit von Entwicklungsartefakten ist eine zentrale Herausforderung der

Die ADT unterstützen typische Refactoring-Aufgaben mit Hilfe der [Quick Assists](https://help.sap.com/docs/ABAP_PLATFORM_NEW/c238d694b825421f940829321ffa326a/4ec1d7ba6e391014adc9fffe4e204223.html)-Funktionen, zu denen auch die Quick Fixes gehören. Die Quick Assists sind kontextsensitiv. Sie können beispielsweise komplexe Quelltextabschnitte in kleinere, neue und vor allem eigenständige Methoden auslagern, was die Verständlichkeit und damit die Wartbarkeit deutlich erhöht. Ohne Unterstützung durch die Quick Assists ist ein solches iteratives Vorgehen deutlich arbeitsintensiver und auch fehleranfälliger.

Seit 2023 unterstützt auch das neue Plug-in [ABAP Cleaner](/ADT-Leitfaden//plug-ins/open-source-adt-plugins/#ABAPCleaner) das Refactoring von ABAP-Code. Dieses kann über 60 Regeln des Clean ABAP Styleguides nach Wunsch automatisch, interaktiv oder auch im Read-Only Modus anwenden und damit die Lesbarkeit des Codes verbessern.

Weitere und detailliertere Informationen zum Refactoring und Werkzeugen, die Ihnen in den ADT dafür zur Verfügung gestellt werden, finden Sie in Kapitel [Arbeiten mit ADT](/ADT-Leitfaden/working-with-adt).

## Sie passen die Darstellung Ihrer Entwicklungsumgebung gerne Ihren Wünschen an.
Expand All @@ -89,6 +91,9 @@ Eine Auswahl dieser Plug-ins wird in Kapitel [Plug-ins](/ADT-Leitfaden/plug-ins)

In der Vergangenheit haben verschiedene ABAP-Entwickler von dieser Möglichkeit bereits Gebrauch gemacht und eigene Plug-ins entwickelt, die sie der SAP-Community kostenlos zur Verfügung stellen. Ein Beispiel hierfür sind die [ABAP Quick Fix](https://marketplace.eclipse.org/content/abap-quick-fix). Dies ist eine Erweiterung der im Standard der ADT angebotenen Quick Fixes zur Unterstützung der automatischen Konvertierung der klassischen ABAP-Syntax in das jeweilige moderne ABAP-Syntax-Pendant.

Seit 2023 gibt es als neues Eclipse Plugin den [ABAP Cleaner](/ADT-Leitfaden//plug-ins/open-source-adt-plugins/#ABAPCleaner). Mit diesem Tool ist ein den Clean-ABAP Richtlinien entsprechendes Refactoring (teil-)automatisiert möglich.
Da der ABAP Cleaner rein client-basiert arbeitet, ist die Nutzung des Tools mit jeder Backend Version möglich. Der ABAP-Cleaner kann auch im Read-Only Modus bzw. als Standalone-Tool verwendet werden. Hierbei kann Code auch importiert, bearbeitet und wieder exportiert werden. Somit können z.B. auch Enhancement-Sections mittels ABAP-Cleaner überarbeitet werden. Mehr Informationen hierzu finden sich in den Kapiteln [Arbeiten mit ADT](/ADT-Leitfaden/working-with-adt/#Refactoring) und [Plug-ins](/ADT-Leitfaden//plug-ins/open-source-adt-plugins).

## Sie kennen Eclipse bereits von anderen Programmiersprachen. Prima!

Eclipse als Grundlage der ADT ist in verschiedenen Unternehmen bereits im Einsatz. Das liegt daran, dass es z. B. für JAVA eine der am weit verbreitetsten Entwicklungsumgebungen ist. JAVA wiederum ist eine häufig verwendete Programmiersprache (vgl. [TIOBE-Index](https://www.tiobe.com/tiobe-index/)) und spielt daher in vielen Entwicklungsprojekten eine Rolle. Daneben ist Eclipse aber auch für andere Entwicklungszwecke einsetzbar, z. B. für die Entwicklung in der Programmiersprache Python oder der Arbeit mit Daten im Extensible-Markup-Language-Format (XML).
Expand Down Expand Up @@ -160,4 +165,4 @@ Uwe Fetzer: "*Schneller, komfortabler, sicherer kann man ABAP Clean Code nicht e

Sebastian Freilinger-Huber: *"Lieber heute als morgen die 'Komfortzone SE80' verlassen - es lohnt sich. Sollten Sie noch zweifeln, finden Sie zahlreiche Argumente für den Umstieg in den folgenden Kapiteln\".*

Thomas Foehn: "*Der Umstieg braucht etwas Durchhaltevermögen und das berühmte Verlassen der eigenen Komfortzone. Doch Quickfixes, Refactorings, ElementInfos oder die Möglichkeit, sich leicht systemübergreifend durch die Objekte zu navigieren machen eine Entwicklung ohne ADT für mich mittlerweile unmöglich.*"
Thomas Foehn: "*Der Umstieg braucht etwas Durchhaltevermögen und das berühmte Verlassen der eigenen Komfortzone. Doch Quickfixes, Refactorings, ElementInfos oder die Möglichkeit, sich leicht systemübergreifend durch die Objekte zu navigieren machen eine Entwicklung ohne ADT für mich mittlerweile unmöglich.*"
18 changes: 18 additions & 0 deletions docs/plug-ins/open-source-adt-plugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,24 @@ nav_order: 2
1. TOC
{:toc}

## ABAP Cleaner
Der ABAP Cleaner ist seit Sommer 2023 verfügbar und unterstützt Entwickler bei der Erstellung von ABAP Code, der den Richtlinien des Clean-ABAP Styleguides entspricht. Das Plugin lässt sich genau wie andere Eclipse Plugins und damit auch wie ADT in Eclipse mittels "Install new Software" einfach installieren. Das Repository findet sich in GitHub unter:
[https://sap.github.io/abap-cleaner/updatesite](https://sap.github.io/abap-cleaner/updatesite).

Da der ABAP Cleaner rein Client basiert ist, gibt es keine direkten Abhängigkeiten zu der ABAP Version des Backends. Da manche ABAP Cleaner Regeln nicht auf allen ABAP Releases anwendbar sind, z.B. Inline Deklarationen oder Einsatz neuer ABAP Statements, kann in der ABAP Cleaner Konfiguration das ABAP Release eingestellt werden. Dementsprechend werden auch nur anwendbare Regeln verwendet.

Mittels der "Show Read-Only Preview" Funktion kann auch ABAP Code aus dem SAP-GUI (bei Enhancements) oder aus anderen Systemen per Copy-and-Paste oder als Textdatei eingefügt, bereinigt und anschließend der bereinigte Code exportiert werden.
Die tatsächlich angewendeten Regeln werden in einem extra Fenster angezeigt.

Für Entwicklerteams besteht die Möglichkeit eigene Profile zu konfigurieren. In den Profilen werden die Regeln ausgewählt, die mit dem Profil angewendet werden sollen. In dieser Konfigurationsansicht wird die Auswirkung des Code Cleanings anhand von Beispielen dargestellt und man erhält so auch einen guten Überblick welche Änderungen die Regeln bewirken.
Für den Einstieg und für detaillierte Informationen empfehlen sich folgende Blogeinträge:
[ABAP cleaner project – open, configurable, and automated](https://blogs.sap.com/2023/10/30/abap-cleaner-project-open-configurable-and-automated/)
[ABAP Tools for Clean ABAP](https://blogs.sap.com/2023/10/09/abap-tools-for-clean-abap/)

Das ABAP Cleaner Plug-in ist ein Tool das unbedingt eingesetzt und bei allen ADT Installationen mitinstalliert werden sollte.
Warum wurde die Funktion nicht einfach in ADT implementiert wenn diese so grundlegend und wichtig ist?
Die Auslieferung als separates Plugin durch SAP und damit eine Entkopplung vom Release-Zyklus des ADT-Kerns ermöglicht eine flexiblere und schnellere Auslieferung von neuen Features im ABAP Cleaner Kontext.

## ABAP Favorites

Das ABAP Favorites Plug-in wurde entwickelt, um die Funktionalität des SAP GUI User Menu abzubilden. In diesem Menü kann jeder Benutzer Transaktionen, Reports oder URLs seinen Favoriten hinzufügen und diese nach seinen persönlichen Vorlieben strukturieren.
Expand Down
4 changes: 2 additions & 2 deletions docs/plug-ins/plugin-development.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ Dieses Plug-in erlaubt es, kompilierten Source-Code lesbar anzuzeigen. Es ist so

#### Web Developer Tools

Marketplace Link: [https://marketplace.eclipse.org/content/eclipse-web-developer-tools-0/promo](https://marketplace.eclipse.org/content/eclipse-web-developer-tools-0/promo).
Marketplace Link: [https://marketplace.eclipse.org/content/eclipse-web-developer-tools-0/](https://marketplace.eclipse.org/content/eclipse-web-developer-tools-0/).

Wenn man für sein Plug-in auch eine Hilfe anbieten möchte, erweitert dieses Plug-in Eclipse um Editoren mit Syntax-Highlighting für die typischen Web-Dateiendungen (css, html etc.).

Expand Down Expand Up @@ -394,4 +394,4 @@ IStatus logonStatus = AdtLogonServiceUIFactory.createLogonServiceUI()

## Projekt-Set-up mit Maven

Neben den Standardmöglichkeiten zur Entwicklung von Plug-ins, Features und Update-Sites, welche mit der *Eclipse IDE for RCP and RAP Developers* geliefert werden, gibt es auch noch die Option, Eclipse Tycho zu verwenden. Eclipse Tycho ist eine Sammlung von Plug-ins für Apache Maven. Weitere Informationen können der [Projektseite](https://github.com/eclipse-tycho/tycho) von Tycho entnommen werden. Ein Tutorial zur Plug-in-Entwicklung mit Tycho gibt es [hier](https://github.com/eclipse-tycho/tycho).
Neben den Standardmöglichkeiten zur Entwicklung von Plug-ins, Features und Update-Sites, welche mit der *Eclipse IDE for RCP and RAP Developers* geliefert werden, gibt es auch noch die Option, Eclipse Tycho zu verwenden. Eclipse Tycho ist eine Sammlung von Plug-ins für Apache Maven. Weitere Informationen können der [Projektseite](https://github.com/eclipse-tycho/tycho) von Tycho entnommen werden. Ein Tutorial zur Plug-in-Entwicklung mit Tycho gibt es [hier](https://github.com/eclipse-tycho/tycho).
20 changes: 19 additions & 1 deletion docs/working-with-adt/features/refactoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ In der Vergangenheit war dies mit der SE80 meist mit hohem Aufwand verbunden. Du

Mit den ADT hat sich diese Situation nun verändert. Existieren keine automatisierten Tests als doppelter Boden, so ist es immer noch möglich, sogenannte Save Refactorings durchzuführen, die wir an dieser Stelle beschreiben möchten. Ein Save Refactoring kennzeichnet sich dadurch, dass es Tool-gestützt, d. h. durch Funktionen der IDE oder auch mit zusätzlichen Plug-ins, durchgeführt wird. Dadurch entfällt das Risiko, durch manuelle Änderungen neue Fehler in den Code einzubauen. Durch die Automatisierung können Refactorings leicht durchgeführt werden und damit zum Bestandteil der täglichen Arbeit werden.

## Refactoring mit Quick Assists
Die ADT bieten über die Quick Assists (**STRG+1**) folgende Refactorings an:

1. Rename Identifier -- Umbenennung innerhalb eines Codeblocks oder global
Expand All @@ -51,4 +52,21 @@ Da z. B. die Rename-Funktion Identifier nicht nur innerhalb der Einheit, sondern

Die Extract-Funktion analysiert den markierten Code, bietet Hilfestellung bei der Parametervergabe und ersetzt die Stelle des Codes mit dem Aufruf der neu erstellten Methode. Wenn die zu extrahierende Methode mit einem Kommentar versehen ist, wird dieser als Vorschlag für die Benennung der Methode herangezogen.

Weiterhin empfehlen die Autoren die Verwendung des Plug-ins [ABAP Quick Fix](https://marketplace.eclipse.org/content/abap-quick-fix) von Lukasz Pegiel, welches im Kapitel [Plug-ins](/ADT-Leitfaden/plug-ins) beschrieben wird. Generell bieten die mittels Quick Fixes bereitgestellten Refactoring Tools in ADT sowohl bei der Erstellung als auch bei der Überarbeitung von bestehendem Code eine enorme Hilfe. Die Nutzung dieses hilfreichen Plug-ins verbessert auf diese Weise einerseits den aktuell bearbeiteten Code, hilft aber auch bei der Erstellung von neuem Code, die neueren Sprachkonstrukte selbst anzuwenden, falls man darin noch wenig geübt ist.
## Refactoring Plugins
### ABAP Cleaner Plug-in
Eine noch recht neue Möglichkeit besteht in der Nutzung des Plug-ins [ABAP Cleaner](/ADT-Leitfaden//plug-ins/open-source-adt-plugins/#ABAPCleaner). <br>
Dieses Plugin bietet verschiedene Möglichkeiten den Code gemäß des Clean-ABAP Styleguides zu optimieren. Der ABAP Cleaner wendet mehr als 60 Regeln des Clean-ABAP Styleguides an und automatisiert, was automatisierbar ist. Während die ADT Refactoring Funktionen vorrangig für Strukturänderung des Codes verwendet werden, wendet der ABAP Cleaner Regeln an,
die die Lesbarkeit des Codes verbessern, z.B. durch Ersetzung von Call Method durch funktionale Aufrufe,
die Anwendung einheitlicher Formatierung bzgl. Leerzeichen und Leerzeilen und die Ersetzung von Datendefinitionen durch Inline-Deklarationen.

Als weitere und wichtige Unterscheidung zum Formatter, kann die Anwendung des ABAP Cleaner auch selektiv nur auf einzelne Methoden oder gar Selektionen beschränkt werden. Dies ist wichtig wenn vorhandener Code überarbeitet werden muss, aber nicht die ganze Klasse vom ABAP-Cleaner geändert werden soll.<br>
Die Funktionen des ABAP Cleaners finden sich im Bereich Source-Code des Kontextmenues (**ALT+SHIFT+S**).
Es kann dabei eine vollautomatisierte Variante, eine Interaktive Variante oder die Read-Only Option verwendet werden.

Der ABAP Cleaner bringt die meisten Vorteile, wenn dieser bereits bei der Erstellung von Code verwendet wird und damit neu erstellte Artefakte automatisch den Clean-Code Regeln entsprechen.<br>
Als Nebeneffekt dieser Verwendung werden die Clean-ABAP Regeln in der Praxis sichtbar und ein Entwickler wird die von ABAP-Cleaner angewandten Regeln kurz- bis mittelfristig automatisch bei neuen Entwicklungen selbst anwenden.<br>
Wird der ABAP Cleaner konsequent im gesamten Entwicklungsteam eingesetzt, fördert es die Verständlichkeit und Lesbarkeit von Code im gesamten Team, da die selben Regeln einheitlich angewendet werden. Weitere Informationen zum ABAP Cleaner finden sie im Abschnitt [Plug-ins](/ADT-Leitfaden//plug-ins/open-source-adt-plugins/).


### ABAP-Quick-Fix Plug-in
Weiterhin empfehlen die Autoren die Verwendung des Plug-ins [ABAP Quick Fix](https://marketplace.eclipse.org/content/abap-quick-fix) von Lukasz Pegiel, welches im Kapitel [Plug-ins](/ADT-Leitfaden/plug-ins) beschrieben wird. Generell bieten die mittels Quick Fixes bereitgestellten Refactoring Tools in ADT sowohl bei der Erstellung als auch bei der Überarbeitung von bestehendem Code eine enorme Hilfe. Die Nutzung dieses hilfreichen Plug-ins verbessert auf diese Weise einerseits den aktuell bearbeiteten Code, hilft aber auch bei der Erstellung von neuem Code, die neueren Sprachkonstrukte selbst anzuwenden, falls man darin noch wenig geübt ist.

0 comments on commit 69ed88b

Please sign in to comment.