facebookexperimental / fb-vscode
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
vscodeignore
txt
pug
desktop
coffee
npmignore
iss
handlebars
editorconfig
diff
hbs
cmd
shader
gitattributes
fs
ini
hlsl
cshtml
lua
  • 56 extensions are included in analyses: ts, svg, json, css, js, vscodeignore, txt, md, html, sh, yml, gitignore, bat, ps1, yaml, scss, xml, less, cpp, pug, py, rs, desktop, go, coffee, php, pl, npmignore, iss, java, handlebars, editorconfig, swift, clj, mm, diff, vb, rb, groovy, hbs, cmd, shader, gitattributes, fs, jsx, sql, tsx, cc, c, ini, hlsl, m, cshtml, cs, r, lua
  • 5 criteria are used to exclude files from analysis:
    • exclude files with path like ".*/[.][a-zA-Z0-9_]+.*" (Hidden files and folders) (136 files).
    • exclude files with path like ".*/bin/.*" (Binaries for distribution) (4 files).
    • exclude files with path like ".*\.d\.ts" (Typescript definition files) (96 files).
    • exclude files with path like ".*/octicons[.]css" (Octicons) (1 file).
    • exclude files with path like ".*/bootstrap[.](js|css|less|scss|styl)" (Bootstrap) (2 files).
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.

main400072 LOC (57%) 2047 files
test126496 LOC (18%) 642 files
generated0 LOC (0%) 0 files
build and deployment856 LOC (<1%) 54 files
other173526 LOC (24%) 1097 files
Main Code
All manually created or maintained source code that defines logic of the product that is run in a production environment.
iss
desktop
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*".
  • 2047 files match defined criteria (400,072 lines of code, 100.0% vs. main code):
    • 1,763 *.ts files (371,981 lines of code)
    • 89 *.js files (13,820 lines of code)
    • 160 *.css files (11,678 lines of code)
    • 16 *.yml files (1,116 lines of code)
    • 1 *.iss files (1,020 lines of code)
    • 9 *.html files (214 lines of code)
    • 4 *.ps1 files (129 lines of code)
    • 1 *.yaml files (59 lines of code)
    • 2 *.desktop files (29 lines of code)
    • 2 *.xml files (26 lines of code)
  • " *.ts" is biggest, containing 92.98% of code.
  • " *.xml" is smallest, containing 0.01% of code.


*.ts371981 LOC (92%) 1763 files
*.js13820 LOC (3%) 89 files
*.css11678 LOC (2%) 160 files
*.yml1116 LOC (<1%) 16 files
*.iss1020 LOC (<1%) 1 files
*.html214 LOC (<1%) 9 files
*.ps1129 LOC (<1%) 4 files
*.yaml59 LOC (<1%) 1 files
*.desktop29 LOC (<1%) 2 files
*.xml26 LOC (<1%) 2 files
Test Code
Used only for testing of the product. Normally not deployed in a production environment.
cshtml
coffee
pug
handlebars
hbs
shader
fs
hlsl
lua
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*/[Tt]est/.*".
    • files with paths like ".*[.][Tt]est[.].*".
    • files with paths like ".*[.]test[.].*".
    • files with paths like ".*/test_.*".
    • files with paths like ".*[-]tests/.*".
    • files with paths like ".*[-]test[-].*".
  • 642 files match defined criteria (126,496 lines of code, 31.6% vs. main code):
    • 501 *.ts files (111,143 lines of code)
    • 42 *.js files (12,473 lines of code)
    • 26 *.html files (1,301 lines of code)
    • 15 *.css files (278 lines of code)
    • 4 *.scss files (264 lines of code)
    • 1 *.groovy files (106 lines of code)
    • 2 *.py files (77 lines of code)
    • 2 *.pl files (55 lines of code)
    • 4 *.less files (51 lines of code)
    • 2 *.php files (42 lines of code)
    • 2 *.ps1 files (38 lines of code)
    • 1 *.clj files (38 lines of code)
    • 1 *.cshtml files (38 lines of code)
    • 1 *.mm files (33 lines of code)
    • 1 *.m files (33 lines of code)
    • 4 *.yaml files (32 lines of code)
    • 2 *.coffee files (32 lines of code)
    • 2 *.rs files (31 lines of code)
    • 1 *.jsx files (29 lines of code)
    • 2 *.sh files (28 lines of code)
    • 3 *.cpp files (28 lines of code)
    • 2 *.pug files (27 lines of code)
    • 1 *.c files (27 lines of code)
    • 1 *.handlebars files (26 lines of code)
    • 2 *.xml files (26 lines of code)
    • 1 *.rb files (26 lines of code)
    • 1 *.java files (23 lines of code)
    • 2 *.go files (21 lines of code)
    • 1 *.hbs files (21 lines of code)
    • 1 *.cc files (18 lines of code)
    • 1 *.vb files (16 lines of code)
    • 1 *.cs files (16 lines of code)
    • 1 *.shader files (15 lines of code)
    • 1 *.bat files (15 lines of code)
    • 1 *.fs files (14 lines of code)
    • 1 *.swift files (13 lines of code)
    • 1 *.r files (11 lines of code)
    • 1 *.hlsl files (10 lines of code)
    • 1 *.lua files (10 lines of code)
    • 1 *.sql files (6 lines of code)
    • 1 *.tsx files (5 lines of code)
  • " *.ts" is biggest, containing 87.86% of code.
  • " *.tsx" is smallest, containing 0% of code.


*.ts111143 LOC (87%) 501 files
*.js12473 LOC (9%) 42 files
*.html1301 LOC (1%) 26 files
*.css278 LOC (<1%) 15 files
*.scss264 LOC (<1%) 4 files
*.groovy106 LOC (<1%) 1 files
*.py77 LOC (<1%) 2 files
*.pl55 LOC (<1%) 2 files
*.less51 LOC (<1%) 4 files
*.php42 LOC (<1%) 2 files
*.ps138 LOC (<1%) 2 files
*.clj38 LOC (<1%) 1 files
*.cshtml38 LOC (<1%) 1 files
*.mm33 LOC (<1%) 1 files
*.m33 LOC (<1%) 1 files
*.yaml32 LOC (<1%) 4 files
*.coffee32 LOC (<1%) 2 files
*.rs31 LOC (<1%) 2 files
*.jsx29 LOC (<1%) 1 files
*.sh28 LOC (<1%) 2 files
*.cpp28 LOC (<1%) 3 files
*.pug27 LOC (<1%) 2 files
*.c27 LOC (<1%) 1 files
*.handlebars26 LOC (<1%) 1 files
*.xml26 LOC (<1%) 2 files
*.rb26 LOC (<1%) 1 files
*.java23 LOC (<1%) 1 files
*.go21 LOC (<1%) 2 files
*.hbs21 LOC (<1%) 1 files
*.cc18 LOC (<1%) 1 files
*.vb16 LOC (<1%) 1 files
*.cs16 LOC (<1%) 1 files
*.shader15 LOC (<1%) 1 files
*.bat15 LOC (<1%) 1 files
*.fs14 LOC (<1%) 1 files
*.swift13 LOC (<1%) 1 files
*.r11 LOC (<1%) 1 files
*.hlsl10 LOC (<1%) 1 files
*.lua10 LOC (<1%) 1 files
*.sql6 LOC (<1%) 1 files
*.tsx5 LOC (<1%) 1 files
Build and Deployment Code
Source code used to configure or support build and deployment process.
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 ".*/package[.]json".
    • files with paths like ".*[.]sh".
    • files with paths like ".*([.]|/)webpack([.]|/).*".
    • files with paths like ".*[.]bat".
    • files with paths like ".*/[.]gitattributes".
  • 54 files match defined criteria (856 lines of code, 0.2% vs. main code):
    • 23 *.sh files (374 lines of code)
    • 24 *.js files (345 lines of code)
    • 7 *.bat files (137 lines of code)
  • " *.sh" is biggest, containing 43.69% of code.
  • " *.bat" is smallest, containing 16% of code.


*.sh374 LOC (43%) 23 files
*.js345 LOC (40%) 24 files
*.bat137 LOC (16%) 7 files
Other Code
txt
ini
diff
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]json".
    • files with paths like ".*[.]md".
    • files with paths like ".*/README[.][a-z0-9]+".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*[.]editorconfig".
    • files with paths like ".*/[.]vscodeignore".
    • files with paths like ".*[.]txt".
    • files with paths like ".*/[.]npmignore".
    • files with paths like ".*[.]ini".
    • files with paths like ".*[.]svg".
    • files with paths like ".*/LICENSE[.][a-z0-9]+".
    • files with paths like ".*[.]diff".
    • files with paths like ".*/[Ee]xamples/.*".
  • 1097 files match defined criteria (173,526 lines of code, 43.4% vs. main code):
    • 479 *.json files (160,952 lines of code)
    • 61 *.txt files (9,339 lines of code)
    • 514 *.svg files (2,015 lines of code)
    • 34 *.md files (884 lines of code)
    • 7 *.js files (320 lines of code)
    • 1 *.ini files (9 lines of code)
    • 1 *.diff files (7 lines of code)
  • " *.json" is biggest, containing 92.75% of code.
  • " *.diff" is smallest, containing 0% of code.


*.json160952 LOC (92%) 479 files
*.txt9339 LOC (5%) 61 files
*.svg2015 LOC (1%) 514 files
*.md884 LOC (<1%) 34 files
*.js320 LOC (<1%) 7 files
*.ini9 LOC (<1%) 1 files
*.diff7 LOC (<1%) 1 files
Analyzers
Info about analyzers used for source code examinations.
  • *.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
  • *.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
  • *.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
  • *.yml 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
  • *.iss 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
  • *.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
  • *.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
  • *.yaml 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
  • *.desktop 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
  • *.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


2022-04-15 06:00