# KDevelop

KDevelop ist eine freie grafische Entwicklungsumgebung für Unix-basierte Betriebssysteme und Windows. Der Fokus liegt auf der Unterstützung von C++ als Programmiersprache, einige weitere Sprachen werden aber durch Zusatzmodule („Plugins“) ebenfalls unterstützt.

## Geschichte

Das KDevelop-Projekt wurde 1998 am Institut für Informatik an der Universität Potsdam begonnen, um eine einfach zu bedienende integrierte Entwicklungsumgebung für C++ und C auf Unix-basierten Betriebssystemen bereitzustellen. Seit damals ist die KDevelop-IDE öffentlich unter der GPL erhältlich und unterstützt u. a. Qt-, KDE-, Gnome-, C++- und C-Projekte.
Ab der Version 3.4 beschränkte sich KDevelop auf eine neue grafische Oberfläche namens Simple-IDEAl, konnte freie und kommerzielle Module (Plugins) einbinden und beherrschte viele neue Programmiersprachen.
Die komplett überarbeitete 4.x Entwicklungslinie setzt auf KDE Platform 4 auf.
Die 5.x Entwicklungslinie verwendet KDE Frameworks und Qt 5 und ist eine kontinuierliche Weiterentwicklung von KDevelop 4.

## Nennenswerte Funktionen

Für unterstützte Sprachen besitzt KDevelop die Fähigkeit, den vom Benutzer geschriebenen Code in (nahezu) Echtzeit im Hintergrund zu analysieren. Mit den so gesammelten Informationen wird dann eine Vielzahl von Funktionen angeboten, darunter zum Beispiel:
* Markierung von Fehlern syntaktischer und semantischer Natur (zum Beispiel fehlende Klammern, aber auch die Verwendung nicht definierter Variablen)
* Schnellöffner-Funktion, welche in Echtzeit im gesamten Projekt nach Klassen, Dateien und Funktionen sucht und diese auf Wunsch öffnet
* intelligente Code-Hervorhebung, welche die Struktur des Programms widerspiegelt (z. B. verschiedene Farben für verschiedene Variablen)
* kontextabhängige intelligente Code-Vervollständigung
Weitere nennenswerte Funktionen, die nicht direkt zur Sprachunterstützung gehören, sind zum Beispiel
* integrierte grafische Debugger (basierend auf gdb für C++, pdb für Python)
* Versionskontrolle mittels CVS, Subversion, git (KDevelop > 4.1) oder Perforce Jam
* Eingebaute Unterstützung für CMake; einige weitere Build-Systeme (z. B. qmake) werden durch zusätzliche Plugins unterstützt
* automatische Code-Formatierung mittels astyle u. ä.

## Funktionsweise und technische Details

Für die unterstützen Sprachen wird beim Laden eines Projekts, oder sobald der Benutzer im Editor-Fenster eine Änderung durchführt, der Code in den betroffenen Dateien (neu) analysiert. Dabei wird eine abstrakte Repräsentation des Programmcodes (genannt definition-use-chain, oder kurz DUChain) erzeugt, welche zum Beispiel Informationen darüber enthält, wo Variablen und Funktionen deklariert werden und welche Typen diese besitzen. Viele der sprachbezogenen Funktionen (zum Beispiel Code-Hervorhebung, Schnellöffner, Liste von Klassen und Funktionen, …) werden von der IDE mithilfe dieser Informationen zur Verfügung gestellt; oft völlig ohne zusätzlichen Code im Plugin für die betreffende Sprache. Für andere Funktionen, deren Verallgemeinerung nicht in diesem Umfang möglich ist – wie zum Beispiel Code-Vervollständigung und Vorschläge („tool tips“) – steht eine umfassende API zur Verfügung, welche das Einbinden neuer Sprachen erleichtert.

## Texteditor

KDevelop implementiert keinen eigenen Texteditor, sondern benutzt KatePart durch das KParts-Framework. Die in KatePart selbst, oder als Plugins für KatePart implementierten Funktionen, zum Beispiel der vi-Eingabemodus stehen somit auch in KDevelop zur Verfügung.

## KDevelop und KDevPlatform

KDevelop ab Version 4 basiert auf KDevPlatform, welches umfangreiche APIs zum Beispiel zur statischen Codeanalyse, zur Einbindung von Versionskontrollsystemen, oder zum Einbinden grafischer Debugger zur Verfügung stellt. KDevPlatform wird von denselben Entwicklern verwaltet wie KDevelop; die Trennung dient der besseren Wiederverwendbarkeit. KDevelop selbst ist im Wesentlichen eine Sammlung von Plugins für KDevPlatform. Die Entwicklungsumgebung KDevelop wird dementsprechend für die Verwendung vieler Plugins nicht zwingend benötigt. Es ist also möglich, eine andere auf KDevPlatform basierende Anwendung zu erstellen, welche dann dieselben Plugins benutzt, um zum Beispiel Integration von Versionskontrolle oder Code-Hervorhebung anzubieten. Eine solche Anwendung war die für Web-Entwicklung optimierte IDE Quanta, deren Entwicklung aber Ende 2012 eingestellt wurde.

## Unterstützte Sprachen

Sprachunterstützung für C++, CMake und JavaScript/QML ist fester Bestandteil von KDevelop 4 und 5. Unterstützung für PHP und Python ist in Form zusätzlicher Plugins verfügbar. An der Unterstützung weiterer Sprachen, zum Beispiel Ruby und Go, wird gearbeitet. Für alle anderen Sprachen stehen lediglich die Grundfunktionen, wie einfache Syntax-Hervorhebung und textbasierte Code-Vervollständigung zur Verfügung. Für das Entwickeln von C++-Projekten, die die Bibliothek Qt verwenden, sind einige zusätzliche Funktionen vorhanden, zum Beispiel Unterstützung für das von Qt genutzte Signal-Slot-Konzept.
KDevelop 3 unterstützte die Sprachen Ada, Bash, C, C#, C++, D, Fortran, Haskell, Java, Objective-C, Pascal, Perl, PHP, Python, Ruby, SQL und XUL.