epam / Indigo
Source Code Overview

Analysis scope, overview of main, test, generated, deployment, build, and other code.

Source Code Analysis Scope
Files includes and excluded from analyses
mk
project
txt
in
properties
m4
ini
cmd
nsi
sma
clang-format
csproj
dsp
prefs
editorconfig
diff
props
stylelintignore
plist
cfg
gnu
com
tab
vcxproj
clang-tidy
gitattributes
classpath
filters
resx
Overview of Analyzed Files
Basic stats on analyzed files
Intro
For analysis purposes we separate files in scope into several categories: main, test, generated, deployment and build, and other.

  • The main category contains all manually created source code files that are being used in the production.
  • Files in the main category are used as input for other analyses: logical decomposition, concerns, duplication, file size, unit size, and conditional complexity.
  • Test source code files are used only for testing of the product. These files are normally not deployed to production.
  • Build and deployment source code files are used to configure or support build and deployment process.
  • Generated source code files are automatically generated files that have not been manually changed after generation.
  • While a source code folder may contain a number of files, we are primarily interested in the source code files that are being written and maintained by developers.
  • Files containing binaries, documentation, or third-party libraries, for instance, are excluded from analysis. The exception are third-party libraries that have been changed by developers.

main259252 LOC (55%) 1,269 files
test127665 LOC (27%) 2,006 files
generated54 LOC (<1%) 1 file
build and deployment1963 LOC (<1%) 28 files
other76124 LOC (16%) 244 files
Main Code
All manually created or maintained source code that defines logic of the product that is run in a production environment.
in
nsi
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*".
  • 1269 files match defined criteria (259,252 LOC, 100.0% vs. main code):
    • 394 *.cpp files (146,638 LOC)
    • 380 *.h files (43,683 LOC)
    • 202 *.java files (21,127 LOC)
    • 77 *.py files (10,099 LOC)
    • 35 *.cs files (9,442 LOC)
    • 12 *.inc files (9,204 LOC)
    • 33 *.sql files (6,604 LOC)
    • 43 *.xml files (4,411 LOC)
    • 24 *.in files (2,183 LOC)
    • 6 *.c files (2,004 LOC)
    • 1 *.ipynb files (698 LOC)
    • 15 *.jsx files (672 LOC)
    • 1 *.rdf files (638 LOC)
    • 15 *.scss files (617 LOC)
    • 10 *.cmake files (610 LOC)
    • 2 *.nsi files (260 LOC)
    • 5 *.js files (129 LOC)
    • 6 *.toml files (66 LOC)
    • 1 *.ps1 files (64 LOC)
    • 3 *.tsx files (42 LOC)
    • 2 *.css files (37 LOC)
    • 1 *.html files (17 LOC)
    • 1 *.ts files (7 LOC)
  • " *.cpp" is biggest, containing 56.56% of LOC.
  • " *.ts" is smallest, containing 0% of LOC.


*.cpp146638 LOC (56%) 394 files
*.h43683 LOC (16%) 380 files
*.java21127 LOC (8%) 202 files
*.py10099 LOC (3%) 77 files
*.cs9442 LOC (3%) 35 files
*.inc9204 LOC (3%) 12 files
*.sql6604 LOC (2%) 33 files
*.xml4411 LOC (1%) 43 files
*.in2183 LOC (<1%) 24 files
*.c2004 LOC (<1%) 6 files
*.ipynb698 LOC (<1%) 1 file
*.jsx672 LOC (<1%) 15 files
*.rdf638 LOC (<1%) 1 file
*.scss617 LOC (<1%) 15 files
*.cmake610 LOC (<1%) 10 files
*.nsi260 LOC (<1%) 2 files
*.js129 LOC (<1%) 5 files
*.toml66 LOC (<1%) 6 files
*.ps164 LOC (<1%) 1 file
*.tsx42 LOC (<1%) 3 files
*.css37 LOC (<1%) 2 files
*.html17 LOC (<1%) 1 file
*.ts7 LOC (<1%) 1 file
Test Code
Used only for testing of the product. Normally not deployed in a production environment.
csproj
in
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*/[Tt]ests/.*".
    • files with paths like ".*/test_.*".
    • files with paths like ".*_test[.].*".
    • files with paths like ".*/test[.].*".
    • files with paths like ".*[-]test[-].*".
    • files with paths like ".*/[Tt]est/.*".
    • files with paths like ".*[.][Tt]ests[.].*".
  • 2006 files match defined criteria (127,665 LOC, 49.2% vs. main code):
    • 1,521 *.xml files (65,741 LOC)
    • 369 *.py files (33,981 LOC)
    • 39 *.rdf files (20,850 LOC)
    • 40 *.cpp files (3,665 LOC)
    • 24 *.java files (1,603 LOC)
    • 2 *.js files (1,036 LOC)
    • 2 *.c files (291 LOC)
    • 1 *.inc files (208 LOC)
    • 1 *.cs files (125 LOC)
    • 1 *.csproj files (94 LOC)
    • 4 *.in files (59 LOC)
    • 1 *.bat files (6 LOC)
    • 1 *.sh files (6 LOC)
  • " *.xml" is biggest, containing 51.49% of LOC.
  • " *.sh" is smallest, containing 0% of LOC.


*.xml65741 LOC (51%) 1,521 files
*.py33981 LOC (26%) 369 files
*.rdf20850 LOC (16%) 39 files
*.cpp3665 LOC (2%) 40 files
*.java1603 LOC (1%) 24 files
*.js1036 LOC (<1%) 2 files
*.c291 LOC (<1%) 2 files
*.inc208 LOC (<1%) 1 file
*.cs125 LOC (<1%) 1 file
*.csproj94 LOC (<1%) 1 file
*.in59 LOC (<1%) 4 files
*.bat6 LOC (<1%) 1 file
*.sh6 LOC (<1%) 1 file
Generated Code
Automatically generated files, not manually changed after generation.
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.](html|html|xhtml)" AND any line of content like "[ ]*[<]meta name[=]"generator" .*".
    • files with paths like ".*[.]dsp" AND any line of content like ".*[#] Microsoft Developer Studio Generated Build File.*".
    • files with paths like ".*[.]cs" AND any line of content like "[/][/][ ]*".
  • 1 file matches defined criteria (54 LOC, 0.0% vs. main code). All matches are in *.cs files.


*.cs54 LOC (100%) 1 file
Build and Deployment Code
Source code used to configure or support build and deployment process.
csproj
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]sh".
    • files with paths like ".*/pom[.]xml".
    • files with paths like ".*[.]bat".
    • files with paths like ".*[.]git[a-z]+".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*/build[.]xml".
    • files with paths like ".*([.]|/)webpack([.]|/).*".
    • files with paths like ".*/package[.]json".
    • files with paths like ".*/[.]gitattributes".
    • files with paths like ".*[.]mk".
    • files with paths like ".*[.]csproj".
    • files with paths like ".*/docker[-]compose[.]yaml".
  • 28 files match defined criteria (1,963 LOC, 0.8% vs. main code):
    • 10 *.xml files (923 LOC)
    • 10 *.bat files (577 LOC)
    • 1 *.csproj files (211 LOC)
    • 5 *.sh files (210 LOC)
    • 1 *.js files (36 LOC)
    • 1 *.yaml files (6 LOC)
  • " *.xml" is biggest, containing 47.02% of LOC.
  • " *.yaml" is smallest, containing 0.31% of LOC.


*.xml923 LOC (47%) 10 files
*.bat577 LOC (29%) 10 files
*.csproj211 LOC (10%) 1 file
*.sh210 LOC (10%) 5 files
*.js36 LOC (1%) 1 file
*.yaml6 LOC (<1%) 1 file
Other Code
txt
properties
tab
ini
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]txt".
    • files with paths like ".*[.]json".
    • files with paths like ".*[.]md".
    • files with paths like ".*[.]properties".
    • files with paths like ".*/README[.][a-z0-9]+".
    • files with paths like ".*[.]svg".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*/[.]stylelintignore".
    • files with paths like ".*[.]ini".
    • files with paths like ".*[.]editorconfig".
    • files with paths like ".*[.]plist".
    • files with paths like ".*[.]dsp".
    • files with paths like ".*[.]diff".
    • files with paths like ".*/LICENSE[.][a-z0-9]+".
    • files with paths like ".*[.]tab".
  • 244 files match defined criteria (76,124 LOC, 29.4% vs. main code):
    • 143 *.svg files (36,894 LOC)
    • 21 *.json files (35,799 LOC)
    • 22 *.md files (1,788 LOC)
    • 47 *.txt files (1,345 LOC)
    • 6 *.properties files (211 LOC)
    • 1 *.tab files (44 LOC)
    • 4 *.ini files (43 LOC)
  • " *.svg" is biggest, containing 48.47% of LOC.
  • " *.ini" is smallest, containing 0.06% of LOC.


*.svg36894 LOC (48%) 143 files
*.json35799 LOC (47%) 21 files
*.md1788 LOC (2%) 22 files
*.txt1345 LOC (1%) 47 files
*.properties211 LOC (<1%) 6 files
*.tab44 LOC (<1%) 1 file
*.ini43 LOC (<1%) 4 files
Analyzers
Info about analyzers used for source code examinations.
  • *.cpp files are analyzed with CppAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • Advanced heuristic dependency analysis
  • *.h files are analyzed with CppAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • Advanced heuristic dependency analysis
  • *.java files are analyzed with JavaAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • Advanced heuristic dependency analysis (based on package names)
  • *.py files are analyzed with PythonAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • Basic heuristic dependency analysis
  • *.cs files are analyzed with CSharpAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • Advanced heuristic dependency analysis (based on namespace heuristics)
  • *.inc files are analyzed with PhpAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • Basic heuristic dependency analysis
  • *.sql files are analyzed with SqlAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • No unit size analysis
    • No conditional complexity analysis
    • No dependency analysis
  • *.xml files are analyzed with XmlAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • No unit size analysis
    • No conditional complexity analysis
    • No dependency analysis
  • *.in files are analyzed with RustAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • No dependency analysis
  • *.c files are analyzed with CStyleAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • No dependency analysis
  • *.ipynb files are analyzed with DefaultLanguageAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Basic code cleaning (empty lines removed for LOC calculations and duplication calculations)
    • No unit size analysis
    • No conditional complexity analysis
    • No dependency analysis
  • *.jsx files are analyzed with HtmlAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • Advanced heuristic dependency analysis
  • *.rdf files are analyzed with XmlAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • No unit size analysis
    • No conditional complexity analysis
    • No dependency analysis
  • *.scss files are analyzed with ScssAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • No unit size analysis
    • No conditional complexity analysis
    • No dependency analysis
  • *.cmake files are analyzed with DefaultLanguageAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Basic code cleaning (empty lines removed for LOC calculations and duplication calculations)
    • No unit size analysis
    • No conditional complexity analysis
    • No dependency analysis
  • *.nsi files are analyzed with DefaultLanguageAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Basic code cleaning (empty lines removed for LOC calculations and duplication calculations)
    • No unit size analysis
    • No conditional complexity analysis
    • No dependency analysis
  • *.js files are analyzed with JavaScriptAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • No dependency analysis
  • *.toml files are analyzed with DefaultLanguageAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Basic code cleaning (empty lines removed for LOC calculations and duplication calculations)
    • No unit size analysis
    • No conditional complexity analysis
    • No dependency analysis
  • *.ps1 files are analyzed with DefaultLanguageAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Basic code cleaning (empty lines removed for LOC calculations and duplication calculations)
    • No unit size analysis
    • No conditional complexity analysis
    • No dependency analysis
  • *.tsx files are analyzed with TypeScriptAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • No dependency analysis
  • *.css files are analyzed with CssAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • No unit size analysis
    • No conditional complexity analysis
    • No dependency analysis
  • *.html files are analyzed with HtmlAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • Advanced heuristic dependency analysis
  • *.ts files are analyzed with TypeScriptAnalyzer:
    • All basic standard analyses supported (source code overview, duplication, file size, concerns, findings, metrics, controls)
    • Advanced code cleaning (empty lines and comments removed for LOC calculations, additional cleaning for duplication calculations)
    • Unit size analysis
    • Conditional complexity analysis
    • No dependency analysis


2025-01-17 15:37