microsoft / AdaptiveCards
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
xaml
csproj
ejs
txt
plist
vcxproj
filters
properties
pro
clang-format
gitattributes
editorconfig
cmd
g4
storyboard
targets
i
props
TXT
nuspec
podspec
resx
mjs
snap
  • 52 extensions are included in analyses: json, h, md, java, cs, cpp, ts, mm, js, xml, yml, css, xaml, xib, gitignore, csproj, ejs, txt, kt, plist, m, html, gradle, vcxproj, svg, filters, yaml, tsx, properties, pro, scss, clang-format, gitattributes, editorconfig, cmd, ps1, bat, swift, g4, storyboard, targets, i, psm1, MD, Json, props, TXT, nuspec, podspec, resx, mjs, snap
  • 11 criteria are used to exclude files from analysis:
    • exclude files with path like ".*/[.][a-zA-Z0-9_]+.*" (Hidden files and folders) (76 files).
    • exclude files with path like ".*/proguard[-]rules[.]pro" (ProGuard) (5 files).
    • exclude files with path like ".*/gradle/wrapper/.*" (Gradle) (2 files).
    • exclude files with path like ".*/docs/.*" (Documentation) (330 files).
    • exclude files with path like ".*[.]resx" (The resx resource files) (1 file).
    • exclude files with path like ".*/dist/.*" (Distributions) (1 file).
    • exclude files with path like ".*\.d\.ts" (Typescript definition files) (1 file).
    • 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 ".*/sokrates_conventions[.]json" (Sokrates scoping conventions) (1 file).
    • exclude files with path like ".*[.]txt" (Text files) (7 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.

main183585 LOC (26%) 1809 files
test15240 LOC (2%) 110 files
generated181878 LOC (26%) 28 files
build and deployment2874 LOC (<1%) 37 files
other299073 LOC (43%) 2179 files
Main Code
All manually created or maintained source code that defines logic of the product that is run in a production environment.
vcxproj
ejs
filters
xaml
i
txt
cmd
g4
targets
props
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*".
  • 1809 files match defined criteria (183,585 lines of code, 100.0% vs. main code):
    • 255 *.cpp files (57,472 lines of code)
    • 331 *.java files (26,258 lines of code)
    • 124 *.ts files (23,369 lines of code)
    • 253 *.cs files (19,904 lines of code)
    • 115 *.mm files (14,112 lines of code)
    • 486 *.h files (13,880 lines of code)
    • 94 *.js files (9,173 lines of code)
    • 27 *.css files (8,049 lines of code)
    • 7 *.vcxproj files (1,972 lines of code)
    • 17 *.ejs files (1,291 lines of code)
    • 7 *.filters files (1,245 lines of code)
    • 21 *.xaml files (1,133 lines of code)
    • 2 *.i files (1,074 lines of code)
    • 11 *.m files (978 lines of code)
    • 1 *.txt files (976 lines of code)
    • 16 *.yml files (487 lines of code)
    • 4 *.scss files (441 lines of code)
    • 10 *.html files (415 lines of code)
    • 9 *.kt files (388 lines of code)
    • 2 *.ps1 files (295 lines of code)
    • 5 *.tsx files (262 lines of code)
    • 3 *.cmd files (148 lines of code)
    • 2 *.g4 files (107 lines of code)
    • 2 *.swift files (65 lines of code)
    • 1 *.psm1 files (37 lines of code)
    • 2 *.targets files (24 lines of code)
    • 1 *.md files (21 lines of code)
    • 1 *.props files (9 lines of code)
  • " *.cpp" is biggest, containing 31.31% of code.
  • " *.props" is smallest, containing 0% of code.


*.cpp57472 LOC (31%) 255 files
*.java26258 LOC (14%) 331 files
*.ts23369 LOC (12%) 124 files
*.cs19904 LOC (10%) 253 files
*.mm14112 LOC (7%) 115 files
*.h13880 LOC (7%) 486 files
*.js9173 LOC (4%) 94 files
*.css8049 LOC (4%) 27 files
*.vcxproj1972 LOC (1%) 7 files
*.ejs1291 LOC (<1%) 17 files
*.filters1245 LOC (<1%) 7 files
*.xaml1133 LOC (<1%) 21 files
*.i1074 LOC (<1%) 2 files
*.m978 LOC (<1%) 11 files
*.txt976 LOC (<1%) 1 files
*.yml487 LOC (<1%) 16 files
*.scss441 LOC (<1%) 4 files
*.html415 LOC (<1%) 10 files
*.kt388 LOC (<1%) 9 files
*.ps1295 LOC (<1%) 2 files
*.tsx262 LOC (<1%) 5 files
*.cmd148 LOC (<1%) 3 files
*.g4107 LOC (<1%) 2 files
*.swift65 LOC (<1%) 2 files
*.psm137 LOC (<1%) 1 files
*.targets24 LOC (<1%) 2 files
*.md21 LOC (<1%) 1 files
*.props9 LOC (<1%) 1 files
Test Code
Used only for testing of the product. Normally not deployed in a production environment.
csproj
xaml
snap
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*/[Tt]ests/.*".
    • files with paths like ".*/[Tt]est/.*".
    • files with paths like ".*/src/androidTest/.*".
    • files with paths like ".*/test_.*".
    • files with paths like ".*[.][Tt]est[.].*".
    • files with paths like ".*[.]test[.].*".
    • files with paths like ".*__test__.*".
    • files with paths like ".*[.]snap".
    • files with paths like ".*[.][Tt]est/.*".
    • files with paths like ".*[.][Tt]ests[.].*".
    • files with paths like ".*/Mocks/.*".
    • files with paths like ".*/__mocks?__/.*".
    • files with paths like ".*__tests__.*".
    • files with paths like ".*[.]spec[.]ts".
    • files with paths like ".*[-]tests/.*".
    • files with paths like ".*/[Ss]pecs/.*".
    • files with any line of content like ".*/simpletest/.*".
    • files with paths like ".*UnitTests/.*".
  • 110 files match defined criteria (15,240 lines of code, 8.3% vs. main code):
    • 34 *.java files (7,170 lines of code)
    • 20 *.cs files (3,708 lines of code)
    • 6 *.js files (2,133 lines of code)
    • 32 *.ts files (1,299 lines of code)
    • 3 *.csproj files (285 lines of code)
    • 4 *.kt files (277 lines of code)
    • 1 *.xaml files (134 lines of code)
    • 1 *.snap files (107 lines of code)
    • 2 *.yml files (50 lines of code)
    • 2 *.mm files (44 lines of code)
    • 3 *.h files (20 lines of code)
    • 1 *.m files (7 lines of code)
    • 1 *.tsx files (6 lines of code)
  • " *.java" is biggest, containing 47.05% of code.
  • " *.tsx" is smallest, containing 0.04% of code.


*.java7170 LOC (47%) 34 files
*.cs3708 LOC (24%) 20 files
*.js2133 LOC (13%) 6 files
*.ts1299 LOC (8%) 32 files
*.csproj285 LOC (1%) 3 files
*.kt277 LOC (1%) 4 files
*.xaml134 LOC (<1%) 1 files
*.snap107 LOC (<1%) 1 files
*.yml50 LOC (<1%) 2 files
*.mm44 LOC (<1%) 2 files
*.h20 LOC (<1%) 3 files
*.m7 LOC (<1%) 1 files
*.tsx6 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".
    • files with paths like ".*[.]cs" AND any line of content like "[/][/][ ]*".
  • 28 files match defined criteria (181,878 lines of code, 99.1% vs. main code):
    • 22 *.json files (180,613 lines of code)
    • 6 *.cs files (1,265 lines of code)
  • " *.json" is biggest, containing 99.3% of code.
  • " *.cs" is smallest, containing 0.7% of code.


*.json180613 LOC (99%) 22 files
*.cs1265 LOC (<1%) 6 files
Build and Deployment Code
Source code used to configure or support build and deployment process.
csproj
nuspec
podspec
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]git[a-z]+".
    • files with paths like ".*/[.]gitattributes".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*/package[-]lock[.]json".
    • files with paths like ".*[.]gradle".
    • files with paths like ".*/AndroidManifest[.]xml".
    • files with paths like ".*[.]bat".
    • files with paths like ".*/package[.]json".
    • files with paths like ".*[.]csproj".
    • files with paths like ".*[.]podspec".
    • files with paths like ".*([.]|/)webpack([.]|/).*".
    • files with paths like ".*[.]nuspec".
  • 37 files match defined criteria (2,874 lines of code, 1.6% vs. main code):
    • 13 *.csproj files (1,534 lines of code)
    • 11 *.js files (658 lines of code)
    • 9 *.gradle files (462 lines of code)
    • 2 *.bat files (144 lines of code)
    • 1 *.nuspec files (39 lines of code)
    • 1 *.podspec files (37 lines of code)
  • " *.csproj" is biggest, containing 53.38% of code.
  • " *.podspec" is smallest, containing 1.29% of code.


*.csproj1534 LOC (53%) 13 files
*.js658 LOC (22%) 11 files
*.gradle462 LOC (16%) 9 files
*.bat144 LOC (5%) 2 files
*.nuspec39 LOC (1%) 1 files
*.podspec37 LOC (1%) 1 files
Other Code
plist
csproj
xaml
storyboard
properties
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]json".
    • files with paths like ".*[.]editorconfig".
    • files with paths like ".*[.]md".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*/README[.][a-z0-9]+".
    • files with paths like ".*[.]svg".
    • files with paths like ".*/[Ss]amples/.*".
    • files with paths like ".*[.]txt".
    • files with paths like ".*[.]properties".
    • files with paths like ".*[.]plist".
    • files with paths like ".*[.]xib".
    • files with paths like ".*[.]storyboard".
    • files with paths like ".*[.](xml|xsd|robot|sql|pgsql|dashboard|profile|ipynb|raml|avsc|al)".
  • 2179 files match defined criteria (299,073 lines of code, 162.9% vs. main code):
    • 1,888 *.json files (285,646 lines of code)
    • 137 *.md files (9,089 lines of code)
    • 86 *.xml files (1,624 lines of code)
    • 14 *.cs files (964 lines of code)
    • 22 *.xib files (813 lines of code)
    • 12 *.plist files (351 lines of code)
    • 4 *.csproj files (267 lines of code)
    • 5 *.xaml files (143 lines of code)
    • 5 *.svg files (76 lines of code)
    • 2 *.storyboard files (56 lines of code)
    • 4 *.properties files (44 lines of code)
  • " *.json" is biggest, containing 95.51% of code.
  • " *.properties" is smallest, containing 0.01% of code.


*.json285646 LOC (95%) 1888 files
*.md9089 LOC (3%) 137 files
*.xml1624 LOC (<1%) 86 files
*.cs964 LOC (<1%) 14 files
*.xib813 LOC (<1%) 22 files
*.plist351 LOC (<1%) 12 files
*.csproj267 LOC (<1%) 4 files
*.xaml143 LOC (<1%) 5 files
*.svg76 LOC (<1%) 5 files
*.storyboard56 LOC (<1%) 2 files
*.properties44 LOC (<1%) 4 files
Analyzers
Info about analyzers used for source code examinations.
  • *.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
  • *.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)
  • *.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
  • *.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)
  • *.mm 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
  • *.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
  • *.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
  • *.vcxproj 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
  • *.ejs 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
  • *.filters 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
  • *.i 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
  • *.m 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
  • *.txt 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
  • *.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
  • *.scss files are analyzed with ScssAnalyzer:
    • 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
  • *.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)
  • *.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
  • *.tsx 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
  • *.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
  • *.g4 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
  • *.swift files are analyzed with SwiftAnalyzer:
    • 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
  • *.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
  • *.targets 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
  • *.md 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
  • *.props 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-01-30 14:21