microsoft / Windows-universal-samples
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
txt
vcxproj
filters
csproj
jsproj
hlsl
vbproj
aspx
vstemplate
cshtml
srt
vtt
hlsli
targets
ashx
cmd
asax
gitattributes
ino
  • 34 extensions are included in analyses: h, cpp, cs, xaml, js, txt, html, md, vcxproj, filters, csproj, css, vb, jsproj, hlsl, xml, vbproj, ps1, json, aspx, svg, vstemplate, cshtml, srt, vtt, hlsli, targets, ashx, cmd, asax, gitattributes, yml, gitignore, ino
  • 5 criteria are used to exclude files from analysis:
    • exclude files with path like ".*/[.][a-zA-Z0-9_]+.*" (Hidden files and folders) (6 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 ".*/sokrates_conventions[.]json" (Sokrates scoping conventions) (1 file).
    • exclude files with path like ".*[.]txt" (Text files) (627 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.

main158291 LOC (21%) 2084 files
test0 LOC (0%) 0 files
generated0 LOC (0%) 0 files
build and deployment3158 LOC (<1%) 17 files
other565250 LOC (77%) 7193 files
Main Code
All manually created or maintained source code that defines logic of the product that is run in a production environment.
jsproj
vcxproj
xaml
filters
vstemplate
aspx
hlsl
hlsli
cmd
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*".
  • 2084 files match defined criteria (158,291 lines of code, 100.0% vs. main code):
    • 666 *.js files (66,482 lines of code)
    • 127 *.jsproj files (18,126 lines of code)
    • 198 *.css files (17,657 lines of code)
    • 499 *.html files (17,280 lines of code)
    • 167 *.cpp files (12,580 lines of code)
    • 28 *.vcxproj files (6,421 lines of code)
    • 88 *.xaml files (5,819 lines of code)
    • 76 *.cs files (5,612 lines of code)
    • 171 *.h files (4,608 lines of code)
    • 27 *.filters files (1,475 lines of code)
    • 19 *.vb files (1,374 lines of code)
    • 4 *.ps1 files (278 lines of code)
    • 7 *.vstemplate files (254 lines of code)
    • 1 *.aspx files (133 lines of code)
    • 4 *.hlsl files (103 lines of code)
    • 1 *.hlsli files (56 lines of code)
    • 1 *.cmd files (33 lines of code)
  • " *.js" is biggest, containing 42% of code.
  • " *.cmd" is smallest, containing 0.02% of code.


*.js66482 LOC (41%) 666 files
*.jsproj18126 LOC (11%) 127 files
*.css17657 LOC (11%) 198 files
*.html17280 LOC (10%) 499 files
*.cpp12580 LOC (7%) 167 files
*.vcxproj6421 LOC (4%) 28 files
*.xaml5819 LOC (3%) 88 files
*.cs5612 LOC (3%) 76 files
*.h4608 LOC (2%) 171 files
*.filters1475 LOC (<1%) 27 files
*.vb1374 LOC (<1%) 19 files
*.ps1278 LOC (<1%) 4 files
*.vstemplate254 LOC (<1%) 7 files
*.aspx133 LOC (<1%) 1 files
*.hlsl103 LOC (<1%) 4 files
*.hlsli56 LOC (<1%) 1 files
*.cmd33 LOC (<1%) 1 files
Build and Deployment Code
Source code used to configure or support build and deployment process.
csproj
vbproj
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 ".*[.]csproj".
    • files with paths like ".*[.]vbproj".
  • 17 files match defined criteria (3,158 lines of code, 2.0% vs. main code):
    • 11 *.csproj files (1,878 lines of code)
    • 6 *.vbproj files (1,280 lines of code)
  • " *.csproj" is biggest, containing 59.47% of code.
  • " *.vbproj" is smallest, containing 40.53% of code.


*.csproj1878 LOC (59%) 11 files
*.vbproj1280 LOC (40%) 6 files
Other Code
xaml
vcxproj
csproj
filters
vbproj
hlsl
aspx
jsproj
targets
ashx
ino
srt
vtt
hlsli
cshtml
asax
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 ".*/[.]gitignore".
    • files with paths like ".*/README[.][a-z0-9]+".
    • files with paths like ".*/[Ss]amples/.*".
    • files with paths like ".*[.]txt".
    • files with paths like ".*[.]svg".
    • files with paths like ".*[.](xml|xsd|robot|sql|pgsql|dashboard|profile|ipynb|raml|avsc|al)".
  • 7193 files match defined criteria (565,250 lines of code, 357.1% vs. main code):
    • 1,484 *.cpp files (153,094 lines of code)
    • 1,443 *.cs files (125,871 lines of code)
    • 1,159 *.xaml files (58,892 lines of code)
    • 241 *.vcxproj files (57,426 lines of code)
    • 1,584 *.h files (51,196 lines of code)
    • 240 *.csproj files (45,903 lines of code)
    • 384 *.md files (25,431 lines of code)
    • 237 *.filters files (17,486 lines of code)
    • 168 *.vb files (11,715 lines of code)
    • 35 *.vbproj files (8,162 lines of code)
    • 92 *.hlsl files (3,760 lines of code)
    • 42 *.xml files (2,711 lines of code)
    • 14 *.ps1 files (741 lines of code)
    • 7 *.aspx files (613 lines of code)
    • 4 *.jsproj files (516 lines of code)
    • 2 *.targets files (314 lines of code)
    • 13 *.js files (281 lines of code)
    • 9 *.json files (267 lines of code)
    • 13 *.html files (221 lines of code)
    • 2 *.ashx files (167 lines of code)
    • 7 *.svg files (126 lines of code)
    • 1 *.ino files (102 lines of code)
    • 3 *.srt files (79 lines of code)
    • 3 *.vtt files (75 lines of code)
    • 1 *.hlsli files (56 lines of code)
    • 4 *.cshtml files (44 lines of code)
    • 1 *.asax files (1 lines of code)
  • " *.cpp" is biggest, containing 27.08% of code.
  • " *.asax" is smallest, containing 0% of code.


*.cpp153094 LOC (27%) 1484 files
*.cs125871 LOC (22%) 1443 files
*.xaml58892 LOC (10%) 1159 files
*.vcxproj57426 LOC (10%) 241 files
*.h51196 LOC (9%) 1584 files
*.csproj45903 LOC (8%) 240 files
*.md25431 LOC (4%) 384 files
*.filters17486 LOC (3%) 237 files
*.vb11715 LOC (2%) 168 files
*.vbproj8162 LOC (1%) 35 files
*.hlsl3760 LOC (<1%) 92 files
*.xml2711 LOC (<1%) 42 files
*.ps1741 LOC (<1%) 14 files
*.aspx613 LOC (<1%) 7 files
*.jsproj516 LOC (<1%) 4 files
*.targets314 LOC (<1%) 2 files
*.js281 LOC (<1%) 13 files
*.json267 LOC (<1%) 9 files
*.html221 LOC (<1%) 13 files
*.ashx167 LOC (<1%) 2 files
*.svg126 LOC (<1%) 7 files
*.ino102 LOC (<1%) 1 files
*.srt79 LOC (<1%) 3 files
*.vtt75 LOC (<1%) 3 files
*.hlsli56 LOC (<1%) 1 files
*.cshtml44 LOC (<1%) 4 files
*.asax1 LOC (<1%) 1 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
  • *.jsproj 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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.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)
  • *.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
  • *.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
  • *.vb files are analyzed with VisualBasicAnalyzer:
    • 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
  • *.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
  • *.vstemplate 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
  • *.aspx 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
  • *.hlsl 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
  • *.hlsli 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


2022-01-30 09:35