awsdocs / aws-doc-sdk-examples
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
csproj
txt
properties
mod
cshtml
npmignore
  • 35 extensions are included in analyses: java, js, go, md, cs, py, php, json, kt, csproj, rb, yaml, cpp, xml, rs, txt, sh, html, ts, toml, properties, kts, css, yml, gitignore, mod, h, rst, cshtml, bat, ps1, gradle, npmignore, sql, ipynb
  • 6 criteria are used to exclude files from analysis:
    • exclude files with path like ".*/[.][a-zA-Z0-9_]+.*" (Hidden files and folders) (397 files).
    • exclude files with path like ".*/git[-]history[.]txt" (Git history) (1 file).
    • exclude files with path like ".*/git[-][a-zA-Z0-9_]+[.]txt" (Git data exports for sokrates analyses) (0 files).
    • exclude files with path like ".*/bin/.*" (Binaries for distribution) (139 files).
    • exclude files with path like ".*[.]txt" (Text files) (83 files).
    • exclude files with path like ".*/sokrates_conventions[.]json" (Sokrates scoping conventions) (1 file).
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.

main194769 LOC (53%) 4057 files
test51811 LOC (14%) 948 files
generated21236 LOC (5%) 1 files
build and deployment4967 LOC (1%) 327 files
other91102 LOC (25%) 1012 files
Main Code
All manually created or maintained source code that defines logic of the product that is run in a production environment.
cshtml
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*".
  • 4057 files match defined criteria (194,769 lines of code, 100.0% vs. main code):
    • 1,063 *.java files (60,228 lines of code)
    • 220 *.py files (19,667 lines of code)
    • 418 *.go files (19,377 lines of code)
    • 269 *.cs files (16,432 lines of code)
    • 532 *.js files (14,841 lines of code)
    • 357 *.kt files (13,040 lines of code)
    • 381 *.php files (10,874 lines of code)
    • 183 *.cpp files (10,834 lines of code)
    • 150 *.yaml files (9,657 lines of code)
    • 153 *.rb files (6,326 lines of code)
    • 83 *.html files (3,848 lines of code)
    • 62 *.ts files (3,095 lines of code)
    • 39 *.css files (1,486 lines of code)
    • 15 *.yml files (1,393 lines of code)
    • 13 *.rs files (1,358 lines of code)
    • 47 *.kts files (1,053 lines of code)
    • 52 *.toml files (751 lines of code)
    • 10 *.h files (260 lines of code)
    • 8 *.cshtml files (229 lines of code)
    • 2 *.ps1 files (20 lines of code)
  • " *.java" is biggest, containing 30.92% of code.
  • " *.ps1" is smallest, containing 0.01% of code.


*.java60228 LOC (30%) 1063 files
*.py19667 LOC (10%) 220 files
*.go19377 LOC (9%) 418 files
*.cs16432 LOC (8%) 269 files
*.js14841 LOC (7%) 532 files
*.kt13040 LOC (6%) 357 files
*.php10874 LOC (5%) 381 files
*.cpp10834 LOC (5%) 183 files
*.yaml9657 LOC (4%) 150 files
*.rb6326 LOC (3%) 153 files
*.html3848 LOC (1%) 83 files
*.ts3095 LOC (1%) 62 files
*.css1486 LOC (<1%) 39 files
*.yml1393 LOC (<1%) 15 files
*.rs1358 LOC (<1%) 13 files
*.kts1053 LOC (<1%) 47 files
*.toml751 LOC (<1%) 52 files
*.h260 LOC (<1%) 10 files
*.cshtml229 LOC (<1%) 8 files
*.ps120 LOC (<1%) 2 files
Test Code
Used only for testing of the product. Normally not deployed in a production environment.
csproj
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*_test[.].*".
    • files with paths like ".*/[Tt]est/.*".
    • files with paths like ".*/test_.*".
    • files with paths like ".*/[Tt]ests/.*".
    • 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 ".*[.][Tt]ests/.*".
    • files with paths like ".*[.][Tt]ests[.].*".
    • files with any line of content like ".*/simpletest/.*".
  • 948 files match defined criteria (51,811 lines of code, 26.6% vs. main code):
    • 190 *.py files (16,543 lines of code)
    • 235 *.go files (16,408 lines of code)
    • 60 *.java files (5,821 lines of code)
    • 97 *.rb files (4,639 lines of code)
    • 297 *.js files (3,905 lines of code)
    • 25 *.cpp files (2,190 lines of code)
    • 29 *.php files (1,208 lines of code)
    • 10 *.yaml files (780 lines of code)
    • 3 *.sh files (253 lines of code)
    • 1 *.cs files (49 lines of code)
    • 1 *.csproj files (15 lines of code)
  • " *.py" is biggest, containing 31.93% of code.
  • " *.csproj" is smallest, containing 0.03% of code.


*.py16543 LOC (31%) 190 files
*.go16408 LOC (31%) 235 files
*.java5821 LOC (11%) 60 files
*.rb4639 LOC (8%) 97 files
*.js3905 LOC (7%) 297 files
*.cpp2190 LOC (4%) 25 files
*.php1208 LOC (2%) 29 files
*.yaml780 LOC (1%) 10 files
*.sh253 LOC (<1%) 3 files
*.cs49 LOC (<1%) 1 files
*.csproj15 LOC (<1%) 1 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 ".*/package[-]lock[.]json".
  • 1 file matches defined criteria (21,236 lines of code, 10.9% vs. main code). All matches are in *.json files.


*.json21236 LOC (100%) 1 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 ".*[.]gradle".
    • files with paths like ".*[.]sh".
    • files with paths like ".*[.]bat".
    • files with paths like ".*[.]git[a-z]+".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*/package[.]json".
    • files with paths like ".*/package[-]lock[.]json".
    • files with paths like ".*[.]csproj".
    • files with paths like ".*/docker[-]compose[.]yml".
  • 327 files match defined criteria (4,967 lines of code, 2.6% vs. main code):
    • 237 *.csproj files (3,483 lines of code)
    • 83 *.sh files (1,354 lines of code)
    • 2 *.gradle files (97 lines of code)
    • 5 *.bat files (33 lines of code)
  • " *.csproj" is biggest, containing 70.12% of code.
  • " *.bat" is smallest, containing 0.66% of code.


*.csproj3483 LOC (70%) 237 files
*.sh1354 LOC (27%) 83 files
*.gradle97 LOC (1%) 2 files
*.bat33 LOC (<1%) 5 files
Other Code
properties
mod
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]md".
    • files with paths like ".*[.]txt".
    • files with paths like ".*/[Dd]emos?/.*".
    • files with paths like ".*/README[.][a-z0-9]+".
    • files with paths like ".*[.]json".
    • files with paths like ".*/[Ss]amples/.*".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*/LICENSE[.][a-z0-9]+".
    • files with paths like ".*[.](rst|rest|resttxt|rsttxt)".
    • files with paths like ".*/go[.]mod".
    • files with paths like ".*/[.]npmignore".
    • files with paths like ".*[.]properties".
    • files with paths like ".*[.](xml|xsd|robot|sql|pgsql|dashboard|profile|ipynb|raml|avsc|al)".
  • 1012 files match defined criteria (91,102 lines of code, 46.8% vs. main code):
    • 456 *.md files (51,422 lines of code)
    • 358 *.json files (28,393 lines of code)
    • 110 *.xml files (8,346 lines of code)
    • 7 *.java files (898 lines of code)
    • 9 *.kt files (850 lines of code)
    • 9 *.rst files (460 lines of code)
    • 50 *.properties files (342 lines of code)
    • 1 *.ipynb files (255 lines of code)
    • 11 *.mod files (119 lines of code)
    • 1 *.sql files (17 lines of code)
  • " *.md" is biggest, containing 56.44% of code.
  • " *.sql" is smallest, containing 0.02% of code.


*.md51422 LOC (56%) 456 files
*.json28393 LOC (31%) 358 files
*.xml8346 LOC (9%) 110 files
*.java898 LOC (<1%) 7 files
*.kt850 LOC (<1%) 9 files
*.rst460 LOC (<1%) 9 files
*.properties342 LOC (<1%) 50 files
*.ipynb255 LOC (<1%) 1 files
*.mod119 LOC (<1%) 11 files
*.sql17 LOC (<1%) 1 files
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)
  • *.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
  • *.go files are analyzed with GoLangAnalyzer:
    • 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)
  • *.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
  • *.kt files are analyzed with KotlinAnalyzer:
    • 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 (based on imports and package statements)
  • *.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
  • *.cpp 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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.kts files are analyzed with KotlinAnalyzer:
    • 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 (based on imports and package statements)
  • *.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
  • *.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
  • *.cshtml 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


2022-01-31 22:48