apache / ambari
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
hbs
txt
properties
cmd
cfg
jshintrc
csproj
resx
xsd
ini
watchmanconfig
editorconfig
in
npmignore
spec
vim
nuspec
coffee
wxs
bashrc
gitattributes
sed
ddl
xaml
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.

main632902 LOC (46%) 5,494 files
test422212 LOC (30%) 2,793 files
generated140 LOC (<1%) 3 files
build and deployment13363 LOC (<1%) 127 files
other300144 LOC (21%) 912 files
Main Code
All manually created or maintained source code that defines logic of the product that is run in a production environment.
hbs
cmd
ddl
spec
xaml
coffee
wxs
cfg
in
sed
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*".
  • 5494 files match defined criteria (632,902 LOC, 100.0% vs. main code):
    • 2,360 *.java files (239,020 LOC)
    • 1,258 *.js files (150,798 LOC)
    • 755 *.py files (122,826 LOC)
    • 263 *.xml files (34,587 LOC)
    • 590 *.hbs files (34,489 LOC)
    • 37 *.sql files (15,399 LOC)
    • 23 *.less files (8,678 LOC)
    • 21 *.css files (7,182 LOC)
    • 55 *.html files (4,655 LOC)
    • 45 *.cs files (3,537 LOC)
    • 40 *.ps1 files (3,203 LOC)
    • 2 *.c files (2,983 LOC)
    • 6 *.php files (2,921 LOC)
    • 5 *.psm1 files (965 LOC)
    • 16 *.cmd files (371 LOC)
    • 1 *.ddl files (351 LOC)
    • 2 *.rb files (226 LOC)
    • 1 *.toml files (175 LOC)
    • 2 *.spec files (140 LOC)
    • 1 *.xaml files (117 LOC)
    • 2 *.coffee files (114 LOC)
    • 1 *.wxs files (94 LOC)
    • 4 *.cfg files (26 LOC)
    • 2 *.in files (26 LOC)
    • 1 *.r files (13 LOC)
    • 1 *.sed files (6 LOC)
  • " *.java" is biggest, containing 37.77% of LOC.
  • " *.sed" is smallest, containing 0% of LOC.


*.java239020 LOC (37%) 2,360 files
*.js150798 LOC (23%) 1,258 files
*.py122826 LOC (19%) 755 files
*.xml34587 LOC (5%) 263 files
*.hbs34489 LOC (5%) 590 files
*.sql15399 LOC (2%) 37 files
*.less8678 LOC (1%) 23 files
*.css7182 LOC (1%) 21 files
*.html4655 LOC (<1%) 55 files
*.cs3537 LOC (<1%) 45 files
*.ps13203 LOC (<1%) 40 files
*.c2983 LOC (<1%) 2 files
*.php2921 LOC (<1%) 6 files
*.psm1965 LOC (<1%) 5 files
*.cmd371 LOC (<1%) 16 files
*.ddl351 LOC (<1%) 1 file
*.rb226 LOC (<1%) 2 files
*.toml175 LOC (<1%) 1 file
*.spec140 LOC (<1%) 2 files
*.xaml117 LOC (<1%) 1 file
*.coffee114 LOC (<1%) 2 files
*.wxs94 LOC (<1%) 1 file
*.cfg26 LOC (<1%) 4 files
*.in26 LOC (<1%) 2 files
*.r13 LOC (<1%) 1 file
*.sed6 LOC (<1%) 1 file
Test Code
Used only for testing of the product. Normally not deployed in a production environment.
cfg
hbs
in
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*/[Tt]est/.*".
    • files with paths like ".*/test_.*".
    • files with paths like ".*_test[.].*".
    • files with paths like ".*/karma[.]conf[.]js".
    • files with paths like ".*/e2e/.*".
    • files with paths like ".*/[Tt]ests/.*".
    • files with paths like ".*/mock[a-zA-Z0-9_\- ]+/.*".
    • files with paths like ".*/test[.].*".
  • 2793 files match defined criteria (422,212 LOC, 66.7% vs. main code):
    • 933 *.java files (170,182 LOC)
    • 742 *.js files (136,777 LOC)
    • 784 *.xml files (75,755 LOC)
    • 252 *.py files (37,149 LOC)
    • 12 *.sql files (1,218 LOC)
    • 40 *.sh files (365 LOC)
    • 2 *.php files (301 LOC)
    • 10 *.html files (214 LOC)
    • 11 *.cfg files (134 LOC)
    • 3 *.hbs files (97 LOC)
    • 2 *.css files (10 LOC)
    • 1 *.jsp files (8 LOC)
    • 1 *.in files (2 LOC)
  • " *.java" is biggest, containing 40.31% of LOC.
  • " *.in" is smallest, containing 0% of LOC.


*.java170182 LOC (40%) 933 files
*.js136777 LOC (32%) 742 files
*.xml75755 LOC (17%) 784 files
*.py37149 LOC (8%) 252 files
*.sql1218 LOC (<1%) 12 files
*.sh365 LOC (<1%) 40 files
*.php301 LOC (<1%) 2 files
*.html214 LOC (<1%) 10 files
*.cfg134 LOC (<1%) 11 files
*.hbs97 LOC (<1%) 3 files
*.css10 LOC (<1%) 2 files
*.jsp8 LOC (<1%) 1 file
*.in2 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 ".*[.]cs" AND any line of content like "[/][/][ ]*".
  • 3 files match defined criteria (140 LOC, 0.0% vs. main code). All matches are in *.cs files.


*.cs140 LOC (100%) 3 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 ".*/pom[.]xml".
    • files with paths like ".*[.]sh".
    • files with paths like ".*[.]git[a-z]+".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*[.]nuspec".
    • files with paths like ".*/package[.]json".
    • files with paths like ".*/[.]gitattributes".
    • files with paths like ".*/assembly[.]xml".
    • files with paths like ".*[.]bat".
    • files with paths like ".*[.]csproj".
  • 127 files match defined criteria (13,363 LOC, 2.1% vs. main code):
    • 32 *.xml files (9,025 LOC)
    • 85 *.sh files (3,592 LOC)
    • 6 *.csproj files (615 LOC)
    • 2 *.bat files (83 LOC)
    • 2 *.nuspec files (48 LOC)
  • " *.xml" is biggest, containing 67.54% of LOC.
  • " *.nuspec" is smallest, containing 0.36% of LOC.


*.xml9025 LOC (67%) 32 files
*.sh3592 LOC (26%) 85 files
*.csproj615 LOC (4%) 6 files
*.bat83 LOC (<1%) 2 files
*.nuspec48 LOC (<1%) 2 files
Other Code
txt
properties
xsd
ini
vim
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]properties".
    • files with paths like ".*/checkstyle[.]xml".
    • files with paths like ".*/checkstyle.*".
    • files with paths like ".*[.]json".
    • files with paths like ".*/[Ee]xamples/.*".
    • files with paths like ".*/resources/.*[.]xsd".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*[.]md".
    • files with paths like ".*[.]txt".
    • files with paths like ".*/README[.][a-z0-9]+".
    • files with paths like ".*[.]ini".
    • files with paths like ".*/[.]npmignore".
    • files with paths like ".*/LICENSE[.][a-z0-9]+".
    • files with paths like ".*[.]editorconfig".
    • files with paths like ".*/vendor/.*".
    • files with paths like ".*[.]svg".
    • files with paths like ".*[.](rst|rest|resttxt|rsttxt)".
    • files with paths like ".*[.]vim".
  • 912 files match defined criteria (300,144 LOC, 47.4% vs. main code):
    • 675 *.json files (274,688 LOC)
    • 57 *.txt files (15,231 LOC)
    • 25 *.md files (1,729 LOC)
    • 41 *.properties files (1,720 LOC)
    • 36 *.xml files (1,599 LOC)
    • 5 *.xsd files (1,345 LOC)
    • 26 *.java files (1,295 LOC)
    • 4 *.svg files (845 LOC)
    • 13 *.py files (547 LOC)
    • 21 *.html files (467 LOC)
    • 4 *.ini files (239 LOC)
    • 1 *.sql files (216 LOC)
    • 2 *.vim files (115 LOC)
    • 1 *.yaml files (99 LOC)
    • 1 *.jsp files (9 LOC)
  • " *.json" is biggest, containing 91.52% of LOC.
  • " *.jsp" is smallest, containing 0% of LOC.


*.json274688 LOC (91%) 675 files
*.txt15231 LOC (5%) 57 files
*.md1729 LOC (<1%) 25 files
*.properties1720 LOC (<1%) 41 files
*.xml1599 LOC (<1%) 36 files
*.xsd1345 LOC (<1%) 5 files
*.java1295 LOC (<1%) 26 files
*.svg845 LOC (<1%) 4 files
*.py547 LOC (<1%) 13 files
*.html467 LOC (<1%) 21 files
*.ini239 LOC (<1%) 4 files
*.sql216 LOC (<1%) 1 file
*.vim115 LOC (<1%) 2 files
*.yaml99 LOC (<1%) 1 file
*.jsp9 LOC (<1%) 1 file
Analyzers
Info about analyzers used for source code examinations.
  • *.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)
  • *.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
  • *.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
  • *.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
  • *.hbs 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
  • *.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
  • *.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
  • *.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
  • *.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)
  • *.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
  • *.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
  • *.php 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
  • *.psm1 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
  • *.cmd 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
  • *.ddl 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
  • *.rb files are analyzed with RubyAnalyzer:
    • 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
    • Basic heuristic 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
  • *.spec 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
  • *.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
  • *.wxs 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
  • *.cfg files are analyzed with CfgAnalyzer:
    • 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
  • *.r files are analyzed with RAnalyzer:
    • 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
  • *.sed files are analyzed with YamlAnalyzer:
    • 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


2025-05-07 15:28