apache / incubator-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
cfg
resx
csproj
cmd
wxs
spec
vim
in
ini
el
wxi
wxl
wixproj
gitattributes
ddl
xaml
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.

main184209 LOC (49%) 2,071 files
test78058 LOC (20%) 598 files
generated206 LOC (<1%) 5 files
build and deployment5506 LOC (1%) 88 files
other107304 LOC (28%) 383 files
Main Code
All manually created or maintained source code that defines logic of the product that is run in a production environment.
hbs
ddl
el
cmd
spec
wxs
xaml
coffee
wixproj
cfg
in
wxl
wxi
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*".
  • 2071 files match defined criteria (184,209 LOC, 100.0% vs. main code):
    • 433 *.js files (54,067 LOC)
    • 604 *.java files (51,669 LOC)
    • 287 *.xml files (23,615 LOC)
    • 168 *.py files (21,629 LOC)
    • 172 *.hbs files (8,456 LOC)
    • 149 *.pp files (7,661 LOC)
    • 62 *.erb files (4,464 LOC)
    • 19 *.php files (4,123 LOC)
    • 42 *.cs files (2,361 LOC)
    • 21 *.ps1 files (1,496 LOC)
    • 21 *.sql files (1,178 LOC)
    • 53 *.rb files (937 LOC)
    • 3 *.psm1 files (722 LOC)
    • 1 *.ddl files (672 LOC)
    • 1 *.el files (191 LOC)
    • 5 *.cmd files (141 LOC)
    • 2 *.spec files (140 LOC)
    • 4 *.wxs files (139 LOC)
    • 1 *.xaml files (117 LOC)
    • 8 *.html files (95 LOC)
    • 1 *.coffee files (80 LOC)
    • 1 *.pl files (79 LOC)
    • 1 *.wixproj files (64 LOC)
    • 1 *.c files (55 LOC)
    • 8 *.cfg files (33 LOC)
    • 1 *.in files (12 LOC)
    • 1 *.wxl files (7 LOC)
    • 1 *.wxi files (6 LOC)
  • " *.js" is biggest, containing 29.35% of LOC.
  • " *.wxi" is smallest, containing 0% of LOC.


*.js54067 LOC (29%) 433 files
*.java51669 LOC (28%) 604 files
*.xml23615 LOC (12%) 287 files
*.py21629 LOC (11%) 168 files
*.hbs8456 LOC (4%) 172 files
*.pp7661 LOC (4%) 149 files
*.erb4464 LOC (2%) 62 files
*.php4123 LOC (2%) 19 files
*.cs2361 LOC (1%) 42 files
*.ps11496 LOC (<1%) 21 files
*.sql1178 LOC (<1%) 21 files
*.rb937 LOC (<1%) 53 files
*.psm1722 LOC (<1%) 3 files
*.ddl672 LOC (<1%) 1 file
*.el191 LOC (<1%) 1 file
*.cmd141 LOC (<1%) 5 files
*.spec140 LOC (<1%) 2 files
*.wxs139 LOC (<1%) 4 files
*.xaml117 LOC (<1%) 1 file
*.html95 LOC (<1%) 8 files
*.coffee80 LOC (<1%) 1 file
*.pl79 LOC (<1%) 1 file
*.wixproj64 LOC (<1%) 1 file
*.c55 LOC (<1%) 1 file
*.cfg33 LOC (<1%) 8 files
*.in12 LOC (<1%) 1 file
*.wxl7 LOC (<1%) 1 file
*.wxi6 LOC (<1%) 1 file
Test Code
Used only for testing of the product. Normally not deployed in a production environment.
cfg
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 ".*/[Tt]ests/.*".
    • files with paths like ".*_test[.].*".
  • 598 files match defined criteria (78,058 LOC, 42.4% vs. main code):
    • 229 *.java files (36,475 LOC)
    • 200 *.xml files (17,803 LOC)
    • 64 *.py files (15,526 LOC)
    • 81 *.js files (7,644 LOC)
    • 2 *.php files (301 LOC)
    • 10 *.sh files (166 LOC)
    • 6 *.cfg files (85 LOC)
    • 1 *.html files (33 LOC)
    • 3 *.pp files (15 LOC)
    • 1 *.jsp files (8 LOC)
    • 1 *.in files (2 LOC)
  • " *.java" is biggest, containing 46.73% of LOC.
  • " *.in" is smallest, containing 0% of LOC.


*.java36475 LOC (46%) 229 files
*.xml17803 LOC (22%) 200 files
*.py15526 LOC (19%) 64 files
*.js7644 LOC (9%) 81 files
*.php301 LOC (<1%) 2 files
*.sh166 LOC (<1%) 10 files
*.cfg85 LOC (<1%) 6 files
*.html33 LOC (<1%) 1 file
*.pp15 LOC (<1%) 3 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 "[/][/][ ]*".
  • 5 files match defined criteria (206 LOC, 0.1% vs. main code). All matches are in *.cs files.


*.cs206 LOC (100%) 5 files
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 ".*/pom[.]xml".
    • files with paths like ".*[.]sh".
    • files with paths like ".*/package[.]json".
    • files with paths like ".*[.]git[a-z]+".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*[.]csproj".
    • files with paths like ".*[.]bat".
    • files with paths like ".*/[.]gitattributes".
  • 88 files match defined criteria (5,506 LOC, 3.0% vs. main code):
    • 10 *.xml files (2,458 LOC)
    • 70 *.sh files (2,361 LOC)
    • 6 *.csproj files (595 LOC)
    • 2 *.bat files (92 LOC)
  • " *.xml" is biggest, containing 44.64% of LOC.
  • " *.bat" is smallest, containing 1.67% of LOC.


*.xml2458 LOC (44%) 10 files
*.sh2361 LOC (42%) 70 files
*.csproj595 LOC (10%) 6 files
*.bat92 LOC (1%) 2 files
Other Code
txt
properties
vim
ini
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]ini".
    • files with paths like ".*[.]json".
    • files with paths like ".*[.]txt".
    • files with paths like ".*/[Ee]xamples/.*".
    • files with paths like ".*[.]markdown".
    • files with paths like ".*/README[.][a-z0-9]+".
    • files with paths like ".*[.]properties".
    • files with paths like ".*/LICENSE[.][a-z0-9]+".
    • files with paths like ".*[.]vim".
    • files with paths like ".*[.](rst|rest|resttxt|rsttxt)".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*[.]md".
  • 383 files match defined criteria (107,304 LOC, 58.3% vs. main code):
    • 293 *.json files (100,593 LOC)
    • 19 *.txt files (3,958 LOC)
    • 27 *.properties files (1,020 LOC)
    • 17 *.py files (808 LOC)
    • 16 *.html files (282 LOC)
    • 1 *.sql files (216 LOC)
    • 4 *.md files (188 LOC)
    • 2 *.vim files (115 LOC)
    • 2 *.ini files (83 LOC)
    • 2 *.markdown files (41 LOC)
  • " *.json" is biggest, containing 93.75% of LOC.
  • " *.markdown" is smallest, containing 0.04% of LOC.


*.json100593 LOC (93%) 293 files
*.txt3958 LOC (3%) 19 files
*.properties1020 LOC (<1%) 27 files
*.py808 LOC (<1%) 17 files
*.html282 LOC (<1%) 16 files
*.sql216 LOC (<1%) 1 file
*.md188 LOC (<1%) 4 files
*.vim115 LOC (<1%) 2 files
*.ini83 LOC (<1%) 2 files
*.markdown41 LOC (<1%) 2 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)
  • *.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
  • *.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
  • *.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
  • *.pp files are analyzed with PuppetAnalyzer:
    • 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
  • *.erb 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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.el 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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.pl files are analyzed with PerlAnalyzer:
    • 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
  • *.wixproj 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
  • *.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
  • *.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
  • *.wxl 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
  • *.wxi 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


2023-08-10 14:51