microsoft / checkedc-llvm-test-suite
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
txt
in
cmake
f
ps
TXT
ld
cxx
cfg
awk
b
hxx
pro
ll
asc
p
m4
lua
arcconfig
y
spec
el
clang-format
proto
make
gs
  • 43 extensions are included in analyses: h, c, cpp, txt, cc, hpp, in, cmake, hh, py, f, ps, sh, TXT, inc, ld, cu, cxx, cfg, awk, md, b, hxx, pro, ll, perl, asc, json, p, gitignore, m4, yml, lua, pl, bat, arcconfig, y, spec, el, clang-format, proto, make, gs
  • 7 criteria are used to exclude files from analysis:
    • exclude files with path like ".*/[.][a-zA-Z0-9_]+.*" (Hidden files and folders) (7 files).
    • exclude files with path like ".*/docs/.*" (Documentation) (2 files).
    • exclude files with path like ".*[.]m4" (stuff autogenerated by autoconf - still C deps) (2 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) (447 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.

main1262823 LOC (95%) 4761 files
test3972 LOC (<1%) 34 files
generated45869 LOC (3%) 26 files
build and deployment6813 LOC (<1%) 21 files
other1170 LOC (<1%) 10 files
Main Code
All manually created or maintained source code that defines logic of the product that is run in a production environment.
awk
in
p
ld
cxx
f
el
y
cmake
hxx
pro
txt
lua
proto
b
spec
ll
cfg
gs
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*".
  • 4761 files match defined criteria (1,262,823 lines of code, 100.0% vs. main code):
    • 1,566 *.c files (452,685 lines of code)
    • 1,052 *.cpp files (261,454 lines of code)
    • 10 *.awk files (191,447 lines of code)
    • 1,757 *.h files (146,743 lines of code)
    • 32 *.in files (122,776 lines of code)
    • 3 *.p files (27,842 lines of code)
    • 40 *.cc files (12,177 lines of code)
    • 12 *.ld files (9,486 lines of code)
    • 19 *.inc files (5,276 lines of code)
    • 11 *.cxx files (4,481 lines of code)
    • 28 *.f files (4,421 lines of code)
    • 56 *.hpp files (4,267 lines of code)
    • 11 *.cu files (4,111 lines of code)
    • 28 *.py files (2,237 lines of code)
    • 1 *.el files (2,156 lines of code)
    • 5 *.perl files (1,797 lines of code)
    • 32 *.hh files (1,786 lines of code)
    • 1 *.y files (1,544 lines of code)
    • 36 *.cmake files (1,206 lines of code)
    • 6 *.hxx files (1,107 lines of code)
    • 4 *.pro files (896 lines of code)
    • 24 *.txt files (816 lines of code)
    • 2 *.lua files (474 lines of code)
    • 1 *.proto files (407 lines of code)
    • 2 *.pl files (401 lines of code)
    • 6 *.b files (301 lines of code)
    • 1 *.spec files (265 lines of code)
    • 5 *.ll files (103 lines of code)
    • 8 *.cfg files (64 lines of code)
    • 1 *.gs files (56 lines of code)
    • 1 *.yml files (41 lines of code)
  • " *.c" is biggest, containing 35.85% of code.
  • " *.yml" is smallest, containing 0% of code.


*.c452685 LOC (35%) 1566 files
*.cpp261454 LOC (20%) 1052 files
*.awk191447 LOC (15%) 10 files
*.h146743 LOC (11%) 1757 files
*.in122776 LOC (9%) 32 files
*.p27842 LOC (2%) 3 files
*.cc12177 LOC (<1%) 40 files
*.ld9486 LOC (<1%) 12 files
*.inc5276 LOC (<1%) 19 files
*.cxx4481 LOC (<1%) 11 files
*.f4421 LOC (<1%) 28 files
*.hpp4267 LOC (<1%) 56 files
*.cu4111 LOC (<1%) 11 files
*.py2237 LOC (<1%) 28 files
*.el2156 LOC (<1%) 1 files
*.perl1797 LOC (<1%) 5 files
*.hh1786 LOC (<1%) 32 files
*.y1544 LOC (<1%) 1 files
*.cmake1206 LOC (<1%) 36 files
*.hxx1107 LOC (<1%) 6 files
*.pro896 LOC (<1%) 4 files
*.txt816 LOC (<1%) 24 files
*.lua474 LOC (<1%) 2 files
*.proto407 LOC (<1%) 1 files
*.pl401 LOC (<1%) 2 files
*.b301 LOC (<1%) 6 files
*.spec265 LOC (<1%) 1 files
*.ll103 LOC (<1%) 5 files
*.cfg64 LOC (<1%) 8 files
*.gs56 LOC (<1%) 1 files
*.yml41 LOC (<1%) 1 files
Test Code
Used only for testing of the product. Normally not deployed in a production environment.
pro
cfg
in
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • 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 ".*_tests[.].*".
    • files with paths like ".*[-]tests/.*".
    • files with paths like ".*/[Tt]ests/.*".
    • files with any line of content like ".*/simpletest/.*".
  • 34 files match defined criteria (3,972 lines of code, 0.3% vs. main code):
    • 18 *.cc files (2,118 lines of code)
    • 2 *.cpp files (1,028 lines of code)
    • 2 *.h files (581 lines of code)
    • 2 *.c files (144 lines of code)
    • 2 *.pro files (44 lines of code)
    • 5 *.sh files (42 lines of code)
    • 2 *.cfg files (12 lines of code)
    • 1 *.in files (3 lines of code)
  • " *.cc" is biggest, containing 53.32% of code.
  • " *.in" is smallest, containing 0.08% of code.


*.cc2118 LOC (53%) 18 files
*.cpp1028 LOC (25%) 2 files
*.h581 LOC (14%) 2 files
*.c144 LOC (3%) 2 files
*.pro44 LOC (1%) 2 files
*.sh42 LOC (1%) 5 files
*.cfg12 LOC (<1%) 2 files
*.in3 LOC (<1%) 1 files
Generated Code
Automatically generated files, not manually changed after generation.
ps
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.](ps|eps|pfa)".
  • 26 files match defined criteria (45,869 lines of code, 3.6% vs. main code). All matches are in *.ps files.


*.ps45869 LOC (100%) 26 files
Build and Deployment Code
Source code used to configure or support build and deployment process.
make
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]git[a-z]+".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*[.]sh".
    • files with paths like ".*[.]make".
    • files with paths like ".*[.]bat".
  • 21 files match defined criteria (6,813 lines of code, 0.5% vs. main code):
    • 19 *.sh files (6,387 lines of code)
    • 1 *.make files (421 lines of code)
    • 1 *.bat files (5 lines of code)
  • " *.sh" is biggest, containing 93.75% of code.
  • " *.bat" is smallest, containing 0.07% of code.


*.sh6387 LOC (93%) 19 files
*.make421 LOC (6%) 1 files
*.bat5 LOC (<1%) 1 files
Other Code
Explore:   circles  |  sunburst
  • The following criteria are used to filter files:
    • files with paths like ".*[.]json".
    • files with paths like ".*/[.]gitignore".
    • files with paths like ".*[.]txt".
    • files with paths like ".*[.]md".
    • files with paths like ".*/README[.][a-z0-9]+".
    • files with paths like ".*/[Ee]xamples/.*".
    • files with paths like ".*/LICENSE[.][a-z0-9]+".
  • 10 files match defined criteria (1,170 lines of code, 0.1% vs. main code):
    • 5 *.md files (915 lines of code)
    • 3 *.json files (223 lines of code)
    • 2 *.c files (32 lines of code)
  • " *.md" is biggest, containing 78.21% of code.
  • " *.c" is smallest, containing 2.74% of code.


*.md915 LOC (78%) 5 files
*.json223 LOC (19%) 3 files
*.c32 LOC (2%) 2 files
Analyzers
Info about analyzers used for source code examinations.
  • *.c files are analyzed with CStyleAnalyzer:
    • 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
  • *.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
  • *.awk 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
  • *.in 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
  • *.p files are analyzed with ObjectPascalAnalyzer:
    • 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
  • *.cc 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
  • *.ld 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
  • *.inc 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
  • *.cxx 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
  • *.f 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
  • *.hpp 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
  • *.cu 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
  • *.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
  • *.el 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
  • *.perl files are analyzed with PerlAnalyzer:
    • 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
  • *.hh 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
  • *.y 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
  • *.cmake 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
  • *.hxx 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
  • *.pro 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
  • *.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
  • *.lua files are analyzed with LuaAnalyzer:
    • 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
  • *.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
  • *.pl files are analyzed with PerlAnalyzer:
    • 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
  • *.b 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
  • *.spec 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
  • *.ll 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
  • *.cfg files are analyzed with CfgAnalyzer:
    • 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
  • *.gs 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
  • *.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


2022-01-30 14:45