Welcome to Project Explorer - an open source development project


A screen capture of Project Explorer in action

Download the Windows source code (84 kb)

 

Motivation

Project Explorer is aimed to be a powerful tool for engineering, reverse engineering, introspecting key aspects of source code that are not part of existing mainstream visual source code editors like Visual Studio and Eclipse.

This project reuses a simple document-view model as a basis for processing source code. And features are added on top of it. The current source code has a UI with a simple project management view on the side, and has two simple features implemented : one to filter out source code based on one or more exclusion symbols (example : _WIN32). Another feature is a class discoverer.

This project is provided with source code. You are absolutely free to use this source code, all or in part, in your application. If you want to contribute, you can also send an update to the code : it will be reviewed and very likely to checked-in here, shared to the whole audience (500 visitors per day). It's a Windows source code project at the moment. The features should be essentially portable to every other platforms, while the UI will and most likely will remain Windows-only.

This project has a big scope. Even source code visualization like the one depicted here (as a mean to perform refactoring) is in.

 

Status

This project is really in its infancy. Let's get it clear, it's ugly code, barely even reread or whatever. Feel free to refactor it, and make it better.

As of date November 11th 2004, the current project implements the following :

  • the UI has a simple project manager which allows to group source code files under virtual folders
  • a source code filterer, which analyses and filters out lines of code depending on symbols entered in the Filter edit box in the UI. One of the most obvious usage of this is with code where there is plenty of #ifdef _WIN32 and #ifdef __unix__ statements. There is no simple visual instant tool that will let you see how the code expand depending on the symbols. The current code explicitely parses #ifdef, #ifndef, #define, #else, #endif statements so don't expect to use it with Java code for now. The implementation is really for C/C++ source code.
  • a class discoverer. Again it's for C++ currently. This will analyze a source code and will create as an output the list of classes that are used in it. On a more general basis, when applied on an entire source tree, it can gather all classes being used. It's really a very simple and dull implementation. Yet, one can think of many benefits of using it already. Once all classes are gathered, you can export the result to Excel and sort/filter everything according to your needs.

Please note that the source code is not even ready for feature implementation as is. It has many things that are baked in, and need to be abstracted using facades, plugin metaphore, or whatever the hell you want to name those. For instance, features like the source code filterer and the class discoverer currently only work for C/C++ source code, so they should be disabled when opening another source code file type. Of course, this is without prejudging the fact that some additional implementation would allow to accomplish the same kind of source code analysis with say Java code.

 

Guidelines

This is an open source project. It's not hosted by sourceforge, and it's not behind a source code versioning system, so there is no way for you to check-out/check-in code. The only way to contribute is to send code changes by email (fakedwar at h o t m a i l . c o m). The code will be reviewed and uploaded accordingly.

 

What's next?

Features I'd like to implement. Feel free to add your own.

  • plugin architecture for all kind of document-related feature, including for the viewing of source code
  • generalized outlining
  • hyperlinks everywhere to navigate method calls. Support for back/forward
  • refactoring tools
  • support for other file formats : analysis of xml content, analysis of VB/C#/Java code, ...
  • support for project file types : Visual Studio workspace/project, Eclipse workspace, ...

 

Contribute!

 

 

Click here to know about the last developments related to the project.

 

Feel free to leave a comment.

 

Stéphane Rodriguez.

Home
Blog