The KDevelop Hackers are proud and happy to announce that KDevelop 4.0 is finally available as a stable release. Released together is the first version of KDevelop PHP plugins, which make KDevelop a very interesting option for PHP developers.

Features

KDevelop 4.0 comes with lots of features already, even though some things had to be dropped compared to the 3.5 series due to time constraints. In particular we have focused on building an excellent C++ IDE instead of trying to integrate lots of languages halfheartedly. Of course it is still possible to add support for more languages to KDevelop and we are confident that it is actually easier than before: the best proof for that is the PHP plugin that is released alongside KDevelop 4.0.

Code navigation, syntax checking and more

The major features for C++ support include code navigation, which allows you to jump to declarations, and semantic highlighting. Combined they make it much easier to grasp new code bases and navigate in big code projects. Support for syntax checking and semi-automatic code-correction with assistants is included as well as code completion that supports classes, functions, templates, variables and include statements. For the Qt developers among us there is extensive support for the signal/slot mechanisms in Qt. You get signal-completion in connect statements as well as completion for matching slots. Very handy is the weighting of completion items based on their matching in regard to the type of function arguments or the signal-slot signatures.

Project management and code navigation

For the project management we currently have CMake support as the main buildsystem plugin, building projects with custom or generated makefiles is possible too. The CMake support also has some of the above features available so you will get some completion and semantic highlighting as well as code-navigation even in CMake files. Integration between C++ and CMake means new classes can be added to targets in CMake files semi-automatically. To ease the fixing of build errors KDevelop allows jumping to the errors in the code. Furthermore you can use QuickOpen to navigate very fast to any file, class or function in your opened projects or inside the currently opened file.

GDB integration

The integrated GDB support makes it possible to find runtime errors you may have in your codebase. It allows for the usual features like breakpoints, stepping, stopping and inspecting the current call stack. Additionally through the use of special pretty-printing support in GDB we can show many Qt, KDE and STL types in a human-readable form. So your QString's will show up with their actual string literal in the variable list, a QList will have an expandable set of child items and so on.

Documentation

The last great feature of KDevelop we are highlighting is integration of documentation. KDevelop shows inline API documentation for both, CMake and Qt, in tooltips over classes and functions and it allows you to navigate in complete documentation via a toolview.

PHP plugins

This first release of the PHP support plugins already comes with a wealth of features that take some of the burden off a web developer:

Syntax errors get reported as you type and the sources of whole projects get semantically analyzed, including PHP Doc comments for type hints of parameters and return values. Furthermore it will give you extensive code completion, with solid support for OOP. We also support the above mentioned context browsing and semantic highlighting, integrate the online PHP.net documentation and hook into the QuickOpen and class browser plugins.

More to explore

There are many more things to discover in KDevelop and the PHP plugins, like SVN integration with inline editor annotations, grepping over files, session support and source code formatting. Far too much for a short article like this, so we have created a dedicated blog entry to show off some of the features.

Get Started!

We invite everybody to get a copy of the source code from KDE mirrors or install packages from distributions. We wish you all many happy hacking hours. If you run into problems or have questions do not hesitate to contact us either in #kdevelop on freenode, via bugs.kde.org or on our mailinglists.

Comments

It's not that simple. Getting a PHP codebase to run on HipHop still requires some porting at the moment; some PHP features are not supported. This is perfectly fine for large companies with huge PHP code (it's an investment which gives a return value). But for small projects it's not "just compile and go" yet.

Question: is it possible to exclude specific project subdirs from the code parser?

I'm asking because working on a project which imports the whole Boost headers leads to the code parser taking up a lot of resources (both CPU and memory). I would like to be able to have all the nifty features - code completion, online docs - just for my own classes but not for the Boost ones. Is this possible?

I have been using it since the early betas. It makes coding a bliss. I cannot count the number of man-hours it saved me, but if I were to send it back to the developers in cash, they would be rich, I am sure :D

I've been using older KDevelop 3.5 and since beta8 also KDevelop 4 and I really enjoy all the features it provides. Specially code completition and correction are great features throught making coder really lazy to remember some details about code :)

It seems as if you have really done a lot of work on this. Congratulations on all your hard work and thank you so much for taking the time to explain it all in detail and for sharing the code. online Casino

First of all: congratulations on this milestone! It looks really nice. You can be very proud of this achievement.

I tried to use KDevelop on a project that I am currently working on in QtCreator, and found out to my disapointment that KDevelop can not use qmake's pro files. It can not even read them for import. There seems to be an unmaintained, unsupported plugin, but that has not seen any work for more than a year, if I interpret the repository correctly. That is a real pitty.