Here is the overall Codimension architecture. When I started the project I clearly understood that it is nearly impossible for one developer to develop every single required piece from scratch. So the idea was to use the existing python packages as much as possible. This architecture diagram reflects the decision quite well.
There are only three pieces developed within the Codimension project:
- the IDE
- the brief parser module
- the flow parser module
The IDE is written in Python and the modules are written in C/C++ for better performance. The brief parser tells what entities are found in the code like imports, classes, functions, docstrings, global variables etc. This lets the IDE to display a structural information about a file and also to implement some analysis features like identifying unused global variables or functions in the project. The flow parser provides the information for drawing the flowchart diagrams.
All the other modules are thirdparty though some of them required some patching. I used PyQT QT library bindings for drawing the UI, Scintilla for the text editor component, graphviz for providing a layout of some diagrams like a dependency graph. Various Python written packages were used like pyflakes, pylint, rope, pymetrics, yapsy, etc.