Skip to main content

Analysis Tools Overview

Go-Architect includes the following Architecture Analysis Tools.

Project Metrics

This Tool display common metrics used to have a quick idea of the size and complexity of our project. These metrics includes:

Metrics GroupDescription
Lines of CodeCounts the total number of code lines in the project, detecting the greatest package and source file.
InterfacesDisplays the average size for an interfaces, and the biggest and smallest interfaces.
TypesCounts the number of elements of each kind in the project
CommentsCounts comments in the projects.
Cyclomatic ComplexityDisplays the average cyclomatic complexity for our project, and the top 5 most complex functions. It uses gocyclo to resolve this metrics.
Cognitive ComplexityDisplays the average cognitive complexity for our project, and the top 5 most complex functions. It uses gocognit to resolve this metrics.

Each Metrics Group will display an icon that represents the comparison of each metric with the last saved snapshot. The upper right corner shows when was the las time these metrics were saved on the internal DB.

If you want to save the current metrics as a snapshot, just click on the button.

Note Go-Architect only saves one set of metrics for a day, so in case you click several times this button in a day, then you will be updating the snapshot for the current day.

Project Metrics Tool

You can see the evolution for a specific group of metrics clicking the button in each metrics card. For example, the following image shows the historical chart for the Types metrics.

View Historic Evolution for Metrics

To close this Tool, click on Back to Project Analysis button.

Dependency Graph

The Dependency Graph is a visual representation that illustrates the relationships and dependencies between packages in a software artifact. It helps developers and maintainers understand packages relations, which is crucial for managing and building complex software projects.

Dependency Graph Tool

You can zoom in and zoom out the dependency graph using the widget controls, and if you click on a specific package, then it details will be displayed on the Package Details Widget.

Dependency Graph - Selected Package

The selected package details includes:

  • Selected Package: The name of the selected package.
  • Depends on Packages: Packages used by the selected package.
  • Dependant Packages: Packages that uses the selected package.

To close this Tool, click on Back to Project Analysis button.

Dependency Structure Matrix

The Dependency Structure Matrix (DSM) Tool is a graphical representation used to visualize and analyze dependencies between packages in a Project.

Dependency Structure Matrix Tool

To close this Tool, click on Back to Project Analysis button.

Instability & Abstractness

The Instability v/s Abstractness Graph is a powerful tool used to analyze how maintainable, flexible, and easy to understand is an artifact.

Instability and Abstractness Tool

To close this Tool, click on Back to Project Analysis button.

Dependency Coupling

Dependency Coupling Tool helps us to detect how coupled is our artifact with a specific dependency, that can be an internal, same organization, external or a standard package. The next image represents the coupling level between Arch-Go and the github.com/fatih/color package

Dependency Coupling Tool

Additionally, this tool allows us to navigate over the file that uses the dependency, showing the file source code and highlighting the lines that include references to that dependency.

Dependency Coupling Tool - View Source Code

To close this Tool, click on Back to Project Analysis button.

VCS Analysis

This tool is focused on analyze the VCS history of the artifact, displaying some information about contributions and changes over packages/files in the artifact.

Note Go-Architect currently only supports VCS Analysis for Git repositories.

VCS Analysis Tool

The status widget is useful for identifying packages or files that are at risk of knowledge and context loss in the event that a single developer (or small group of developers) left the project.

VCS Analysis Status Widget

To close this Tool, click on Back to Project Analysis button.