epam / JDI
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
properties
feature
txt
csproj
nuspec
xaml
gitattributes
xsl
pro
resx
coffee
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.

main95989 LOC (62%) 1,290 files
test39102 LOC (25%) 756 files
generated151 LOC (<1%) 6 files
build and deployment2870 LOC (1%) 32 files
other15475 LOC (10%) 98 files
Main Code
All manually created or maintained source code that defines logic of the product that is run in a production environment.
xaml
coffee
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*".
  • 1290 files match defined criteria (95,989 LOC, 100.0% vs. main code):
    • 386 *.js files (35,834 LOC)
    • 466 *.java files (26,463 LOC)
    • 80 *.css files (12,346 LOC)
    • 200 *.cs files (9,584 LOC)
    • 9 *.htm files (2,852 LOC)
    • 33 *.groovy files (2,736 LOC)
    • 63 *.py files (1,863 LOC)
    • 12 *.scss files (1,538 LOC)
    • 12 *.less files (1,538 LOC)
    • 24 *.xml files (631 LOC)
    • 2 *.html files (297 LOC)
    • 2 *.xaml files (213 LOC)
    • 1 *.coffee files (94 LOC)
  • " *.js" is biggest, containing 37.33% of LOC.
  • " *.coffee" is smallest, containing 0.1% of LOC.


*.js35834 LOC (37%) 386 files
*.java26463 LOC (27%) 466 files
*.css12346 LOC (12%) 80 files
*.cs9584 LOC (9%) 200 files
*.htm2852 LOC (2%) 9 files
*.groovy2736 LOC (2%) 33 files
*.py1863 LOC (1%) 63 files
*.scss1538 LOC (1%) 12 files
*.less1538 LOC (1%) 12 files
*.xml631 LOC (<1%) 24 files
*.html297 LOC (<1%) 2 files
*.xaml213 LOC (<1%) 2 files
*.coffee94 LOC (<1%) 1 file
Test Code
Used only for testing of the product. Normally not deployed in a production environment.
csproj
feature
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*/[Tt]est/.*".
    • files with paths like ".*_tests[.].*".
    • files with paths like ".*[-]tests/.*".
    • files with paths like ".*/[Tt]ests/.*".
    • files with paths like ".*/test[.].*".
    • files with paths like ".*[.]feature".
    • files with paths like ".*[.][Tt]ests/.*".
    • files with paths like ".*_test[.].*".
    • files with paths like ".*[-]test[-].*".
    • files with paths like ".*/src/androidTest/.*".
  • 756 files match defined criteria (39,102 LOC, 40.7% vs. main code):
    • 200 *.js files (19,181 LOC)
    • 309 *.java files (9,289 LOC)
    • 132 *.cs files (4,625 LOC)
    • 3 *.css files (1,771 LOC)
    • 62 *.py files (1,399 LOC)
    • 3 *.html files (1,113 LOC)
    • 22 *.xml files (924 LOC)
    • 2 *.csproj files (344 LOC)
    • 4 *.groovy files (244 LOC)
    • 19 *.feature files (212 LOC)
  • " *.js" is biggest, containing 49.05% of LOC.
  • " *.feature" is smallest, containing 0.54% of LOC.


*.js19181 LOC (49%) 200 files
*.java9289 LOC (23%) 309 files
*.cs4625 LOC (11%) 132 files
*.css1771 LOC (4%) 3 files
*.py1399 LOC (3%) 62 files
*.html1113 LOC (2%) 3 files
*.xml924 LOC (2%) 22 files
*.csproj344 LOC (<1%) 2 files
*.groovy244 LOC (<1%) 4 files
*.feature212 LOC (<1%) 19 files
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 ".*[.]cs" AND any line of content like "[/][/][ ]*".
  • 6 files match defined criteria (151 LOC, 0.2% vs. main code). All matches are in *.cs files.


*.cs151 LOC (100%) 6 files
Build and Deployment Code
Source code used to configure or support build and deployment process.
csproj
nuspec
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]git[a-z]+".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*[.]gradle".
    • files with paths like ".*[.]bat".
    • files with paths like ".*/pom[.]xml".
    • files with paths like ".*[.]csproj".
    • files with paths like ".*[.]nuspec".
    • files with paths like ".*/[.]gitattributes".
    • files with paths like ".*/package[.]json".
    • files with paths like ".*/AndroidManifest[.]xml".
  • 32 files match defined criteria (2,870 LOC, 3.0% vs. main code):
    • 13 *.xml files (1,240 LOC)
    • 7 *.csproj files (1,216 LOC)
    • 5 *.gradle files (220 LOC)
    • 3 *.bat files (134 LOC)
    • 4 *.nuspec files (60 LOC)
  • " *.xml" is biggest, containing 43.21% of LOC.
  • " *.nuspec" is smallest, containing 2.09% of LOC.


*.xml1240 LOC (43%) 13 files
*.csproj1216 LOC (42%) 7 files
*.gradle220 LOC (7%) 5 files
*.bat134 LOC (4%) 3 files
*.nuspec60 LOC (2%) 4 files
Other Code
properties
xsl
txt
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]json".
    • files with paths like ".*[.]properties".
    • files with paths like ".*/[Ee]xamples/.*".
    • files with paths like ".*/[Dd]emos?/.*".
    • files with paths like ".*[.]md".
    • files with paths like ".*/README[.][a-z0-9]+".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*/config/checkstyle/.*".
    • files with paths like ".*/checkstyle.*".
    • files with paths like ".*/checkstyle[.]xml".
    • files with paths like ".*[.]txt".
    • files with paths like ".*[.]svg".
    • files with paths like ".*/[Ss]amples/.*".
  • 98 files match defined criteria (15,475 LOC, 16.1% vs. main code):
    • 11 *.svg files (11,920 LOC)
    • 9 *.md files (1,147 LOC)
    • 26 *.json files (935 LOC)
    • 13 *.java files (480 LOC)
    • 26 *.properties files (393 LOC)
    • 2 *.xml files (364 LOC)
    • 1 *.xsl files (140 LOC)
    • 2 *.js files (88 LOC)
    • 8 *.txt files (8 LOC)
  • " *.svg" is biggest, containing 77.03% of LOC.
  • " *.txt" is smallest, containing 0.05% of LOC.


*.svg11920 LOC (77%) 11 files
*.md1147 LOC (7%) 9 files
*.json935 LOC (6%) 26 files
*.java480 LOC (3%) 13 files
*.properties393 LOC (2%) 26 files
*.xml364 LOC (2%) 2 files
*.xsl140 LOC (<1%) 1 file
*.js88 LOC (<1%) 2 files
*.txt8 LOC (<1%) 8 files
Analyzers
Info about analyzers used for source code examinations.
  • *.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
  • *.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)
  • *.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
  • *.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)
  • *.htm 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
  • *.groovy files are analyzed with GroovyAnalyzer:
    • 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
  • *.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
  • *.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
  • *.less files are analyzed with LessAnalyzer:
    • 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
  • *.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
  • *.xaml 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
  • *.coffee 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


2025-01-10 14:15