bazelbuild / examples
Components & Dependencies

An overview of source code logical components.

Intro

Logical decomposition is a representation of the organization of the main source code, where every and each file is put in exactly one logical component.

  • A software system can have one or more logical decompositions.
  • A logical decomposition can be defined in two ways in Sokrates.
  • First approach is based on the folders structure. Components are mapped to folders at defined folder depth relative to the source code root.
  • Second approach is based on explicit definition of each component. In such explicit definitions, components are explicitly named and their files are selected based on explicitly defined path and content filters.
  • A logical decomposition is considered invalid if a file is selected into two or more components.This constraint is introduced in order to facilitate measuring of dependencies among components.
  • Files not assigned to any component are put into a special "Unclassified" component.
Learn more...
Logical Decompositions Overview

Analyzed system has 1 logical decomposition:

  • primary (31 components)

Logical Decomposition #1: PRIMARY

The decompositions is based on the folder structure (relative to the source code root), with automatically defined folder depth to have at least 10 components.

Bubble Chart | Tree Map
Components
The "primary" logical decomposition has 31 components.
  • 73 files, 1,605 lines of code (100.0% vs. main code).
  • "rules/starlark_configurations" is biggest, containing 25.92% of code.
  • "rules/features" is smallest, containing 0.37% of code.


rules/starlark_configurations416 LOC (25%) 13 files
rules/runfiles235 LOC (14%) 4 files
tutorial/android93 LOC (5%) 1 files
rules/shell_command75 LOC (4%) 1 files
rules/depsets61 LOC (3%) 2 files
rules/aspect59 LOC (3%) 4 files
rules/predeclared_outputs59 LOC (3%) 1 files
rules/computed_dependencies54 LOC (3%) 1 files
tutorial/ios-app48 LOC (2%) 5 files
rules/executable45 LOC (2%) 1 files
android/firebase-cloud-messaging43 LOC (2%) 3 files
rules/implicit_output38 LOC (2%) 1 files
cpp-tutorial/stage334 LOC (2%) 5 files
rules/expand_template34 LOC (2%) 2 files
rules/actions_run33 LOC (2%) 4 files
android/ndk28 LOC (1%) 2 files
cpp-tutorial/stage227 LOC (1%) 3 files
rules/mandatory_provider25 LOC (1%) 1 files
rules/optional_provider25 LOC (1%) 1 files
android/tutorial24 LOC (1%) 2 files
rules/attributes20 LOC (1%) 1 files
java-tutorial/src19 LOC (1%) 3 files
cpp-tutorial/stage119 LOC (1%) 1 files
third-party-dependencies16 LOC (<1%) 3 files
make-variables/testapp15 LOC (<1%) 2 files
rules/actions_write14 LOC (<1%) 1 files
tutorial/backend12 LOC (<1%) 1 files
java-maven/src11 LOC (<1%) 1 files
flags-parsing-tutorial11 LOC (<1%) 1 files
rules/empty6 LOC (<1%) 1 files
rules/features6 LOC (<1%) 1 files
Dependencies
Dependencies among components are static code dependencies among files in different components.

No component dependencies found.



2022-02-03 05:28