Analyse and explore articles

Kezacode - understanding source code

Introduction

Kezacode provides tools for understanding source code (or program comprehension), including complex software with large source code.

The generated web documentation follows these principes:

Understanding source code directory structure

Kezacode Directory Explorer

The explorer facilitates understanding source code directory structure and its content.

kezacode file explorer image
kezacode explorer - Firefox example

You can explore real projects by following the links: Explore Firefox source code, Explore VLC source code.

Comparison with existing solutions

Web tools already exist to visualize source code directories and content (Git, Mercurial, Opengrok, code search, other...):

Some explorers display the readme file for a folder,

These explorers lack higher level views when displaying files content (like displaying the components generated by a project file)

Understanding key components and dependencies

Software components review

Kezacode extracts components generated by the build system and their dependencies, then it generates a web documentation.

kezacode components explorer image
Components review with kezacode - Firefox example

Hence, it is easier to understand where the main program is generated, what its dependencies are, etc. It easier to understand the high level software architecture and components organization.

Kezacode partially supports the following build / project files:

Kezacode makes an approximative analysis of the project files, so it may miss information or simplify the result of the build process, especially with complex build content.

Components dependencies explorer

The components dependencies explorer displays a graph of the components and their dependencies.

kezacode graph explorer image
kezacode graph explorer - Libreoffice example

As you can see above, the full component graph can be complex. Hence, it is possible to focus on specific component and its descendants, this is shown by the graph below.

kezacode graph explorer, filtered view - image
kezacode graph explorer - Filtered view - Libreoffice writer application - example

You can view components dependencies of real projects by following the links: Explore Libreoffice component dependencies, Explore VLC component dependencies.

Third party components review

Kezacode looks for known third party software components or libraries. This helps providing additional information as well as discovering topics / code domains related to the main source code.

Comparison with existing solutions

IDEs / Development environments can provide a view of projects and their components, but they are limited. There is no obvious kezacode equivalents.

Source code Topics (or code Domains)

Applications tend to focus on specific usages (office, web, multimedia, etc.). Source code directories or components also tend to focus on specific domains (user interface, networking, etc.).

Kezacode analyses the source code to discover these information.

kezacode code domains explorer - image
kezacode code domain explorer - Firefox example

The code domain schema is an alternative version of the explorer.

kezacode code domain schema - image
kezacode code domain graphic schema - Libreoffice example

Source code

Code Interfaces

Looking at the APIs, Services / Interfaces / Functions of a software is a good way to understand what it does. Kezacode analyses interface declaration files. The aggregated result can be viewed in the external interfaces section. Each code file content can also be accessed through the Directory explorer.

kezacode external interfaces explorer - image
kezacode external interfaces - Firefox AIDL example

Kezacode current supports (or partially support):

Manual documentation, concepts, hyperlinks to code content

Manual documentation

Kezacode gathers several sources to generate a documentation:

Concepts

Another way to understand code is to understand the main concepts (or topics / components).

Kezacode provides a list of concepts that can be used as an entry point to understand a software, then navigate to the related components or source code directories.

Documentation with hyperlinks to the code

The manual documentation can be enriched with hyperlinks

Generated by PFA software prototype