CodeMRI Health Report: The 'File List' Page

Purpose

 

The File List tab

The purpose of the ‘File list’ tab in the CodeMRI main report is to show technical health metrics, other information about files, and give the ability to sort and filter file data for different purposes.

Columns names and meanings

  • Each row represents one file in your source code

  • Each column provides a metric or piece of information about that source code file

Column Name

Description

Column Name

Description

Filename 

The path and filename

Extension

The extension. (e.g. java, js, cpp, py, f, etc.)

Language

The programming language (e.g. Java, Ada, FORTRAN, Web)

(Hidden) Network ID

Most files in a report are found to be part of a network of interconnected files. For example files A and B are interconnected if A contains a call to a function defined in B. All interconnected files have the same Network ID. Network 1 is the largest network, Network 2 is the second largest network, etc. Files with Network ID ‘0' are ‘isolates’ or 'singletons’ The scanner found no interconnections between them and any other file.

(Hidden) Network Group Size

The number of files in the same network (all having the same Network ID)

Architecture Type - Core Periphery

Categorization of the file as either Shared/ Core/ Peripheral/ Control/Secondary Network

(Hidden) Architecture Type - Median

Categorization of the file as either Central/ Control / Secondary Network / Shared

Cyclic Group Size

If file is part of a cyclic group (a cluster of files that are all circularly interdependent), this is the size of that cluster.

(Hidden) Cyclic Group ID

Each cyclic group has its own ID. If a file is not in a cyclic group, then the ID is 0.

Core ID

Cyclic groups of size 30 or greater are classified as either Emerging Cores (30-150) or Critical Cores (150+). A non-zero Core ID identifies clusters of files in cores with more than 30 files. Core ID 1 is assigned to the largest core, Core ID 2 to the second largest, etc. A Core ID of 0 indicates either that a file is not in a cyclic group, or that it is in a cyclic group smaller than 30 files.

Fan-In (ie FI)

The number of files that directly depend on this file. High fan-in may be a good thing as many files call this file.

Fan-Out (ie FO)

The number of files this file directly depends on. High fan-out may be problematic, as it indicates that it may be a ‘god class’ or ‘god file’.

(Hidden) Visibility Fan-In (ie VFI)

The number of files that directly or indirectly depend on this file. High VFI may be a good thing as many files call this file.

(Hidden) Visibility Fan-Out (ie VFO)

The number of files that this file directly or indirectly depends on.

(Hidden) Closeness Centrality

A network metric related to the distance between this file and all the other files. For more information see: https://en.wikipedia.org/wiki/Closeness_centrality

(Hidden) Degree Centrality

A network metric proportional to the number of files directly connected to this file (with both incoming and outgoing connections considered). For more information, see: https://en.wikipedia.org/wiki/Centrality#Degree_centrality

(Hidden) In Degree Centrality

A network metric proportional to FI - the number of files that depend on this file.

(Hidden) Out Degree Centrality

A network metric proportional to FO - the number of files this file depends on

(Hidden) Betweenness Centrality

A network metric related to the number of shortest paths this file is on when looking at the distance between any two files. For more information, see:

Max Cyclomatic

The McCabe cyclomatic complexity value for the most complex executable block (likely a function, procedure, or method) of code in the file. Uses the ‘modified’ version of McCabe’s metric that does not penalize switch/case statements. For more information, see:

Cyclomatic Type

Cyclomatic complexity categorized as Low (1-10), Medium (11-20), High (21-50), Very High (50+). For more information, see: C4 Software Technology Reference Guide, page 147.

Lines of Code

This is the raw number of lines of code in this file, including code, comments, whitespace, etc.

Source Lines of Code

This is the number of lines of code in this file, excluding lines with comments and whitespace.

Comment Ratio

This is the ratio of comment lines to code lines in this file.

Needs Focus Order

Sorting by this column applies Silverthread’s sorting algorithm placing the most problematic files at the top of the file list. The most problematic files tend to be those with multiple challenges - such being in a large core and also having high McCabe scores.

Directory Structure Order

Sorting by this column orders the file list alphabetically. It also puts the file list in the same order as the DSM Alpha Sorted diagram (found in the ‘Pictures DSMs’ tab.)

Core Periphery Order

Sorting by this column orders the file list in the same order as the DSM Core-Periphery Sorted diagram (found in the ‘Pictures DSMs’ tab.)

Median Order

Sorting by this column orders the file list in the same order as the DSM Median Sorted diagram (found in the ‘Pictures DSMs’ tab.)

Hierarchical Order

Sorting by this column orders the file list in the same order as the DSM Hierarchical Sorted diagram (found in the ‘Pictures DSMs’ tab.)

(Hidden) Declared Component Order

If a UDA has been used to define components, then sorting by this column groups files into their components, and uses component dependencies declared in the UDA to sort the components from lowest to highest in the stack.

(Hidden) Actual Hierarchical Component Order

If a UDA has been used to define components, then sorting by this column groups files into their components, and uses component dependencies (as found in the source code via static analysis) to sort the components from lowest to highest in the stack.

(Hidden) Component

If a UDA has been used to define components, this shows the component each file has been assigned to.

(Hidden) Percent Duplicated LOC

The percentage of code in this file that is duplicative (either with code inside this file or outside it)

Source Code Managed

If a UDA has been used to define a file as ‘source code managed’ (i.e. controlled by Git or another version control system), then this column shows ‘TRUE’. If defined in the UDA as not source code managed, the column shows ‘FALSE’. If this has not been defined in the UDA, this column shows ‘N/A’

Third Party

If files are identified as 3rd party in the UDA, and the Diagnostic report is run again, this column will reflect those 3rd party designations

Generated

If files are identified as Generated code in the UDA, and the Diagnostic report is run again, this column will reflect those Generated code designations

Test

If files are identified as Test code in the UDA, and the Diagnostic report is run again, this column will reflect those Test code designations