JetBrains / roslyn
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
resx
nuspec
vbproj
xaml
targets
cmd
props
shproj
vsixmanifest
csx
proj
mod
editorconfig
xsd
bsl
obj
vcxproj
fsx
gitattributes
fs
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.

main1997240 LOC (57%) 9,783 files
test1328217 LOC (38%) 2,039 files
generated12429 LOC (<1%) 39 files
build and deployment13108 LOC (<1%) 225 files
other93090 LOC (2%) 213 files
Main Code
All manually created or maintained source code that defines logic of the product that is run in a production environment.
xaml
targets
props
xsd
csx
vsixmanifest
vcxproj
shproj
proj
cmd
fsx
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*".
  • 9783 files match defined criteria (1,997,240 LOC, 100.0% vs. main code):
    • 6,576 *.cs files (1,040,311 LOC)
    • 2,422 *.vb files (551,447 LOC)
    • 598 *.xlf files (380,780 LOC)
    • 57 *.xml files (15,465 LOC)
    • 22 *.xaml files (2,734 LOC)
    • 24 *.ps1 files (2,542 LOC)
    • 21 *.targets files (1,181 LOC)
    • 11 *.props files (676 LOC)
    • 3 *.xsd files (401 LOC)
    • 3 *.csx files (393 LOC)
    • 9 *.vsixmanifest files (287 LOC)
    • 2 *.groovy files (227 LOC)
    • 1 *.psm1 files (217 LOC)
    • 1 *.vcxproj files (150 LOC)
    • 10 *.shproj files (138 LOC)
    • 5 *.proj files (106 LOC)
    • 14 *.cmd files (69 LOC)
    • 1 *.fsx files (66 LOC)
    • 2 *.cpp files (40 LOC)
    • 1 *.h files (10 LOC)
  • " *.cs" is biggest, containing 52.09% of LOC.
  • " *.h" is smallest, containing 0% of LOC.


*.cs1040311 LOC (52%) 6,576 files
*.vb551447 LOC (27%) 2,422 files
*.xlf380780 LOC (19%) 598 files
*.xml15465 LOC (<1%) 57 files
*.xaml2734 LOC (<1%) 22 files
*.ps12542 LOC (<1%) 24 files
*.targets1181 LOC (<1%) 21 files
*.props676 LOC (<1%) 11 files
*.xsd401 LOC (<1%) 3 files
*.csx393 LOC (<1%) 3 files
*.vsixmanifest287 LOC (<1%) 9 files
*.groovy227 LOC (<1%) 2 files
*.psm1217 LOC (<1%) 1 file
*.vcxproj150 LOC (<1%) 1 file
*.shproj138 LOC (<1%) 10 files
*.proj106 LOC (<1%) 5 files
*.cmd69 LOC (<1%) 14 files
*.fsx66 LOC (<1%) 1 file
*.cpp40 LOC (<1%) 2 files
*.h10 LOC (<1%) 1 file
Test Code
Used only for testing of the product. Normally not deployed in a production environment.
bsl
csproj
vbproj
csx
mod
vsixmanifest
xaml
cmd
fs
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 ".*/IntegrationTests?/.*".
    • files with paths like ".*/TestUtilities/.*".
    • files with paths like ".*/[Mm]ocks/.*".
    • files with paths like ".*[.][Tt]ests[.].*".
    • files with paths like ".*/[Ss]pecs/.*".
    • files with paths like ".*[.][Tt]est[.].*".
    • files with paths like ".*[.]test[.].*".
  • 2039 files match defined criteria (1,328,217 LOC, 66.5% vs. main code):
    • 1,253 *.cs files (722,307 LOC)
    • 725 *.vb files (596,536 LOC)
    • 2 *.bsl files (6,158 LOC)
    • 28 *.csproj files (1,984 LOC)
    • 10 *.vbproj files (720 LOC)
    • 4 *.csx files (144 LOC)
    • 3 *.mod files (117 LOC)
    • 2 *.cpp files (97 LOC)
    • 2 *.xml files (77 LOC)
    • 1 *.vsixmanifest files (22 LOC)
    • 1 *.xaml files (20 LOC)
    • 5 *.cmd files (20 LOC)
    • 2 *.bat files (8 LOC)
    • 1 *.fs files (7 LOC)
  • " *.cs" is biggest, containing 54.38% of LOC.
  • " *.fs" is smallest, containing 0% of LOC.


*.cs722307 LOC (54%) 1,253 files
*.vb596536 LOC (44%) 725 files
*.bsl6158 LOC (<1%) 2 files
*.csproj1984 LOC (<1%) 28 files
*.vbproj720 LOC (<1%) 10 files
*.csx144 LOC (<1%) 4 files
*.mod117 LOC (<1%) 3 files
*.cpp97 LOC (<1%) 2 files
*.xml77 LOC (<1%) 2 files
*.vsixmanifest22 LOC (<1%) 1 file
*.xaml20 LOC (<1%) 1 file
*.cmd20 LOC (<1%) 5 files
*.bat8 LOC (<1%) 2 files
*.fs7 LOC (<1%) 1 file
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 ".*[.]designer[.](cs|vb)".
    • files with paths like ".*[.]cs" AND any line of content like "[/][/][ ]*".
  • 39 files match defined criteria (12,429 LOC, 0.6% vs. main code). All matches are in *.cs files.


*.cs12429 LOC (100%) 39 files
Build and Deployment Code
Source code used to configure or support build and deployment process.
csproj
vbproj
nuspec
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]sh".
    • files with paths like ".*[.]csproj".
    • files with paths like ".*[.]nuspec".
    • files with paths like ".*[.]vbproj".
    • files with paths like ".*[.]git[a-z]+".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*[.]bat".
    • files with paths like ".*/[.]gitattributes".
  • 225 files match defined criteria (13,108 LOC, 0.7% vs. main code):
    • 125 *.csproj files (8,258 LOC)
    • 37 *.vbproj files (2,733 LOC)
    • 50 *.nuspec files (1,671 LOC)
    • 10 *.sh files (340 LOC)
    • 3 *.bat files (106 LOC)
  • " *.csproj" is biggest, containing 63% of LOC.
  • " *.bat" is smallest, containing 0.81% of LOC.


*.csproj8258 LOC (62%) 125 files
*.vbproj2733 LOC (20%) 37 files
*.nuspec1671 LOC (12%) 50 files
*.sh340 LOC (2%) 10 files
*.bat106 LOC (<1%) 3 files
Other Code
txt
obj
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]editorconfig".
    • files with paths like ".*[.]md".
    • files with paths like ".*/README[.][a-z0-9]+".
    • files with paths like ".*[.]txt".
    • files with paths like ".*[.]json".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*[.]obj".
    • files with paths like ".*/[Dd]ocumentation/.*".
  • 213 files match defined criteria (93,090 LOC, 4.7% vs. main code):
    • 130 *.txt files (91,424 LOC)
    • 65 *.json files (1,030 LOC)
    • 12 *.md files (370 LOC)
    • 4 *.cs files (140 LOC)
    • 2 *.obj files (126 LOC)
  • " *.txt" is biggest, containing 98.21% of LOC.
  • " *.obj" is smallest, containing 0.14% of LOC.


*.txt91424 LOC (98%) 130 files
*.json1030 LOC (1%) 65 files
*.md370 LOC (<1%) 12 files
*.cs140 LOC (<1%) 4 files
*.obj126 LOC (<1%) 2 files
Analyzers
Info about analyzers used for source code examinations.
  • *.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)
  • *.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
  • *.xlf 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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.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
  • *.xsd 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
  • *.csx 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)
  • *.vsixmanifest 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
  • *.groovy files are analyzed with GroovyAnalyzer:
    • 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
  • *.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
  • *.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
  • *.shproj 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
  • *.proj 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
  • *.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
  • *.fsx 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
  • *.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
  • *.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


2026-01-18 17:06