Source Code Analysis Scope
Files includes and excluded from analyses
snap
patch
plist
proto
nix
gitattributes
tpl
prettierignore
spec
jsonl
editorconfig
npmrc
in
el
cmd
cfg
mjs

scoping details...
  • 42 extensions are included in analyses: rs, snap, ts, json, py, toml, md, txt, sql, yml, sh, patch, bzl, yaml, ps1, c, gitignore, plist, h, html, js, svg, xml, proto, nix, gitattributes, cjs, tpl, prettierignore, css, spec, jsonl, editorconfig, ipynb, npmrc, in, el, cmd, cc, cfg, mjs, cmake
  • 9 criteria are used to exclude files from analysis:
    • exclude files with path like ".*/bin/.*" (Binaries for distribution) (23 files).
    • exclude files with path like ".*/cache/.*" (Caches) (3 files).
    • exclude files with path like ".*/docs/.*" (Documentation) (20 files).
    • exclude files with path like ".*/[Vv]endors?/.*" (Dependencies) (37 files).
    • exclude files with path like ".*/(3rd|[Tt]hird)[-_]?[Pp]arty/.*" (Dependencies) (47 files).
    • exclude files with path like ".*/_sokrates/.*" (Sokrates files) (0 files).
    • exclude files with path like ".*/_sokrates_landscape/.*" (Sokrates landscape files) (0 files).
    • exclude files with path like ".*/git[-][a-zA-Z0-9_]+[.]txt" (Git data exports for sokrates analyses) (0 files).
    • exclude files with path like ".*/sokrates_.*?[.]json" (Sokrates conventions and configurations) (0 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.
main879797 LOC (45%) 3,288 files
test886156 LOC (46%) 3,642 files
generated3701 LOC (<1%) 761 files
build and deployment22366 LOC (1%) 249 files
other126536 LOC (6%) 684 files
Main Code
All manually created or maintained source code that defines logic of the product that is run in a production environment.
proto
tpl
nix
cmd
Explore:   circles  |  sunburst

rs853042 LOC (96%) 3,075 files
py18765 LOC (2%) 76 files
ps12150 LOC (<1%) 8 files
ts1573 LOC (<1%) 13 files
sql791 LOC (<1%) 75 files
html784 LOC (<1%) 4 files
css757 LOC (<1%) 1 file
ipynb539 LOC (<1%) 1 file
proto321 LOC (<1%) 3 files
yaml300 LOC (<1%) 8 files
tpl297 LOC (<1%) 2 files
toml235 LOC (<1%) 14 files
nix134 LOC (<1%) 2 files
js78 LOC (<1%) 2 files
cmd16 LOC (<1%) 1 file
xml14 LOC (<1%) 2 files
h1 LOC (<1%) 1 file

scope details...
  • The following criteria are used to filter files:
    • files with paths like ".*".
  • 3288 files match defined criteria (879,797 LOC, 100.0% vs. main code):
    • 3,075 rs files (853,042 LOC)
    • 76 py files (18,765 LOC)
    • 8 ps1 files (2,150 LOC)
    • 13 ts files (1,573 LOC)
    • 75 sql files (791 LOC)
    • 4 html files (784 LOC)
    • 1 css files (757 LOC)
    • 1 ipynb files (539 LOC)
    • 3 proto files (321 LOC)
    • 8 yaml files (300 LOC)
    • 2 tpl files (297 LOC)
    • 14 toml files (235 LOC)
    • 2 nix files (134 LOC)
    • 2 js files (78 LOC)
    • 1 cmd files (16 LOC)
    • 2 xml files (14 LOC)
    • 1 h files (1 LOC)
Test Code
Used only for testing of the product. Normally not deployed in a production environment.
snap
gitattributes
Explore:   circles  |  sunburst

rs842033 LOC (95%) 2,072 files
snap28468 LOC (3%) 1,505 files
py13478 LOC (1%) 47 files
ts1907 LOC (<1%) 9 files
toml158 LOC (<1%) 5 files
bzl42 LOC (<1%) 1 file
sh35 LOC (<1%) 1 file
cjs30 LOC (<1%) 1 file
gitattributes5 LOC (<1%) 1 file

scope details...
  • The following criteria are used to filter files:
    • files with paths like ".*/test_.*".
    • files with paths like ".*_tests[.].*".
    • files with paths like ".*/[Tt]ests/.*".
    • files with paths like ".*/tests[.]rs".
    • files with paths like ".*__tests__.*".
    • files with paths like ".*[.]snap".
    • files with paths like ".*_test[.].*".
    • files with paths like ".*[-]test[-].*".
    • files with paths like ".*[.][Tt]est[.].*".
    • files with paths like ".*[.]test[.].*".
    • files with paths like ".*/jest[.][a-zA-Z0-9\.]+".
  • 3642 files match defined criteria (886,156 LOC, 100.7% vs. main code):
    • 2,072 rs files (842,033 LOC)
    • 1,505 snap files (28,468 LOC)
    • 47 py files (13,478 LOC)
    • 9 ts files (1,907 LOC)
    • 5 toml files (158 LOC)
    • 1 bzl files (42 LOC)
    • 1 sh files (35 LOC)
    • 1 cjs files (30 LOC)
    • 1 gitattributes files (5 LOC)
Generated Code
Automatically generated files, not manually changed after generation.
Explore:   circles  |  sunburst

ts1878 LOC (50%) 735 files
json1326 LOC (35%) 23 files
py296 LOC (7%) 2 files
rs201 LOC (5%) 1 file

scope details...
  • The following criteria are used to filter files:
    • files with any line of content like "//[ ]*Generated by .*".
    • files with any line of content like "// This file was generated .*".
    • files with paths like ".*/generated/.*".
  • 761 files match defined criteria (3,701 LOC, 0.4% vs. main code):
    • 735 ts files (1,878 LOC)
    • 23 json files (1,326 LOC)
    • 2 py files (296 LOC)
    • 1 rs files (201 LOC)
Build and Deployment Code
Source code used to configure or support build and deployment process.
prettierignore
npmrc
gitattributes
Explore:   circles  |  sunburst

yaml12112 LOC (54%) 43 files
toml5849 LOC (26%) 162 files
sh3118 LOC (13%) 25 files
bzl1188 LOC (5%) 10 files
gitignore83 LOC (<1%) 5 files
prettierignore9 LOC (<1%) 2 files
npmrc4 LOC (<1%) 1 file
gitattributes3 LOC (<1%) 1 file

scope details...
  • The following criteria are used to filter files:
    • files with paths like ".*/pnpm.*[.]ya?ml".
    • files with paths like "(.*/)?[.]prettierrc([.].*)?".
    • 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 ".*/Cargo[.]toml".
    • files with paths like ".*[.]bzl".
    • files with paths like ".*/[.]gitattributes".
    • files with paths like ".*[.]editorconfig".
    • files with paths like "(.*/)?[.]editorconfig".
    • files with paths like ".*/[.]github/workflows/.*[.]ya?ml".
    • files with paths like ".*[.]npmrc".
    • files with paths like "(.*/)?[.]npmrc".
    • files with paths like ".*/[.]prettierignore".
    • files with paths like "(.*/)?[.]prettierignore".
    • files with paths like ".*[.]cmake".
    • files with paths like ".*/pyproject[.]toml".
    • files with paths like ".*/[.]github/actions/.*[.]ya?ml".
    • files with paths like ".*/action[.]ya?ml".
    • files with paths like ".*/requirements[a-zA-Z0-9._-]*[.]txt".
    • files with paths like "(.*/)?[.](idea|vscode|vs|gradle|mvn|settings|metadata|circleci)/.*".
  • 249 files match defined criteria (22,366 LOC, 2.5% vs. main code):
    • 43 yaml files (12,112 LOC)
    • 162 toml files (5,849 LOC)
    • 25 sh files (3,118 LOC)
    • 10 bzl files (1,188 LOC)
    • 5 gitignore files (83 LOC)
    • 2 prettierignore files (9 LOC)
    • 1 npmrc files (4 LOC)
    • 1 gitattributes files (3 LOC)
Other Code
patch
mjs
plist
Explore:   circles  |  sunburst

json109898 LOC (86%) 365 files
md8545 LOC (6%) 133 files
py3363 LOC (2%) 40 files
patch2560 LOC (2%) 34 files
txt1185 LOC (<1%) 89 files
mjs521 LOC (<1%) 1 file
rs234 LOC (<1%) 5 files
cjs131 LOC (<1%) 1 file
plist46 LOC (<1%) 5 files
yaml28 LOC (<1%) 5 files
ts19 LOC (<1%) 4 files
svg6 LOC (<1%) 2 files

scope details...
  • 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 ".*[.]txt".
    • files with paths like ".*/[Ee]xamples/.*".
    • files with paths like ".*/[Ss]amples/.*".
    • files with paths like ".*/LICENSE[.][a-z0-9]+".
    • files with paths like ".*[.]svg".
    • files with paths like ".*[.]patch".
    • files with paths like ".*/vendor/.*".
    • files with paths like ".*/[Dd]emos?/.*".
    • files with paths like ".*[.]plist".
  • 684 files match defined criteria (126,536 LOC, 14.4% vs. main code):
    • 365 json files (109,898 LOC)
    • 133 md files (8,545 LOC)
    • 40 py files (3,363 LOC)
    • 34 patch files (2,560 LOC)
    • 89 txt files (1,185 LOC)
    • 1 mjs files (521 LOC)
    • 5 rs files (234 LOC)
    • 1 cjs files (131 LOC)
    • 5 plist files (46 LOC)
    • 5 yaml files (28 LOC)
    • 4 ts files (19 LOC)
    • 2 svg files (6 LOC)
About This Analysis
learn more about scopes (main, test, generated, build, 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.

learn more about used code analyzers...
  • *.rs 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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.proto 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
  • *.tpl 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
  • *.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
  • *.nix 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
  • *.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
  • *.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
  • *.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