src/ code metrics

July 3, 2026 ยท View on GitHub

Snapshot of the supported SDK libraries under src/. Generated 2026-07-03.

Summary

MetricCount
Projects (.csproj)27
Source files (.cs)690
Total lines83,584
Code lines58,722
Blank lines14,748
Comment lines10,114
Types1,295
Methods / functions8,358

Code lines are non-blank, non-comment lines. Types and methods are approximate; see Methodology.

Hand-written vs generated

Files ending in .g.cs (Plato codegen, glTF schema extensions, etc.):

CategoryFilesTotal linesCode linesTypesMethods
Generated (.g.cs)18418,01412,6604464,432
Hand-written50665,57046,0628493,926

Per project

Four meta-packages (Ara3D.SDK, Ara3D.SDK.Core, Ara3D.SDK.Geometry, Ara3D.SDK.IO) contain no .cs sources; they reference other projects for NuGet packaging.

Plato.Generated and Plato.Intrinsics are shared items (.projitems) compiled into Ara3D.Geometry. They are listed separately below; do not add those rows to other project totals (that would double-count shared code).

ProjectFilesTotal linesCode linesTypesMethods
Ara3D.IO.SharpGLTF10225,54916,8872511,124
Ara3D.Geometry7913,6869,9561721,016
Plato.Generated (shared)16013,0378,9993804,162
Ara3D.Utils918,5286,783116599
Ara3D.BimOpenSchema233,5682,69350254
Plato.Intrinsics (shared)182,9791,65220194
Ara3D.Collections191,9011,2232738
Ara3D.Models131,8871,45819165
Ara3D.IO.VIM151,4801,13223104
Ara3D.PropKit351,4691,16140179
Ara3D.BimOpenSchema.IO101,4311,1711068
Ara3D.IO.G3D141,3389541960
Ara3D.IO.StepParser101,2729801043
Ara3D.Memory141,2569361976
Ara3D.F841,041617489
Ara3D.IO.BFAST99066261654
Ara3D.Utils.Roslyn97476051048
Ara3D.Studio.API146384542832
Ara3D.IO.GltfExporter166354151715
Ara3D.IO.PLY35564241218
Ara3D.DataTable185314541942
Ara3D.Logging154392681930
Ara3D.IO.GeoJson53682881537
Ara3D.WorkItems7313214721
Ara3D.Events6207148126
Ara3D.SDK.Geometry00000
Ara3D.SDK.IO00000
Ara3D.SDK00000
Ara3D.SDK.Core00000

Methodology

Scope

  • Root: src/ only (not ext/, apps/, plugins/, tests/, or toolchain/).
  • Source files: all .cs files, recursively.
  • Excluded: anything under bin/ or obj/ build output folders.
  • Projects: count of .csproj files under src/.

Line classification

Each physical line in a .cs file is classified as:

  1. Blank - empty or whitespace only.
  2. Comment - starts with //, or inside a /* ... */ block comment.
  3. Code - everything else.

Total lines = blank + comment + code. This is a simple lexer, not a full C# parser; edge cases (e.g. // inside a string literal) are rare and not specially handled.

Types

Counted via regex on lines that declare a top-level type keyword:

class, struct, interface, enum, record, delegate

Optional modifiers (public, static, partial, etc.) may precede the keyword. Nested types declared at deeper indentation are still matched. This over-counts slightly when the keyword appears in comments or strings, and under-counts file-scoped types or unusual formatting.

Methods / functions

Counted via regex on lines that look like method declarations: a return type (or modifier chain), an identifier, a parameter list (...), then {, ;, or =>.

Includes most named methods, operators declared like methods, and some constructors. Excludes (approximately):

  • Local functions and lambdas
  • Property getters/setters without a classic method signature line
  • Methods whose declaration spans multiple lines with the parameter list on a later line

Treat method counts as useful ballpark figures, not exact compiler semantics.

Regenerating

From the repo root:

powershell -NoProfile -ExecutionPolicy Bypass -File toolchain\count-src-metrics.ps1

The script overwrites this file.