An IDE is not a Text Editor. It is a complex piece of software that helps you develop your projects faster.
In my opinion, static analysis is the heart of this software.
When you look at it closer most of the modern compiler also make static analysis on the code before they turn it to byte code.
This gives you a possibility to connect to the compiler and just visualize found errors in the editor.
But now you are facing some requirements for compiler. The compiler has to provide an interface for error collection, it has to be able to compile only the file you are working on, and it has to be very fast if you want to show errors live when the user is typing.
Eclipse JDT for example provides its own modified compiler for this purpose.

But still we covered only one problem, the error highlighting.

What’s about auto completion? For auto completion you also have to do static analysis to identify the scope the auto completion was triggered in and the possible proposals in this context. The static analysis for auto completion is much complex than by error highlighting. The user started to type something and now when his code is not complete he wants to auto complete it. The code is not complete so it won’t compile. I know only one compiler that is able to give auto completion suggestions (haXe).

A good IDE provide you also with ability to navigate/search/format and visualize your code.

Code generation is the next big feature that every IDE have to provide and it also have to be based on static analysis, because code generation should not break code. The generated code should be close to programmers intention. The main goal is you don’t have to modify generated code it should be formatted as you expected it should be placed where you expect it, you are ready to go to extend the generated code.

Refactoring is the key feature of every enhanced IDE and it’s also based on the static analysis because it is the same principle as by code generation: don’t break code, refactor it. Refactoring is also much complicated than just code generation. Because in refactoring you delete existing code and generate a new one. So the danger of breaking code is bigger.

Let’s discuss the second part of a good IDE, simplicity and management.
Creation of projects should be simple. People should be able to make shortcut’s for work flows they do frequently.
Frameworks and other technologies that are used by developers should be supported and seamless integrated in the IDE.
It should be easy to launch the developed application so you can have a look at result of your work at any stage.

© 2011 Max Blog Suffusion theme by Sayontan Sinha