Codebase

Navigate the Codebase using the tree view. Use the filters to highlight where various files are grouped to aid understanding.

Getting Started Commands

Project Structure

Below is a short description of the key directories of the project to aid you when understanding where key files are located.

.github/ - This directory contains GitHub-specific configuration files and settings for the project. It includes issue templates, workflows, and settings for the Integrated Development Environment (IDE) in Visual Studio Code.
.github/ISSUE_TEMPLATE/ - This subdirectory contains GitHub issue templates that define the structure and content of new issues created for the project.
.github/workflows/ - This subdirectory contains YAML files that define continuous integration and continuous delivery (CI/CD) workflows for the project.
.vscode/ - This directory contains settings and extensions for Visual Studio Code, the IDE used for developing the project.
assets/ - This directory contains static files used by the project, such as images, icons, and other media.
assets/logo/ - This subdirectory contains project logos and other graphical assets.
samples/ - This directory contains example projects that demonstrate the usage of the Vogen library. Each subdirectory represents a different example, and contains the necessary files and configurations for that example.
src/ - This directory contains the source code for the project. It includes the Vogen library itself, as well as any shared types and code fixers.
src/bin/ - This directory contains compiled binaries for the project.
src/obj/ - This directory contains object files generated during the compilation process.
src/Vogen/ - This subdirectory contains the core Vogen library code. It includes subdirectories for diagnostics, extensions, generators, properties, rules, suppressors, templates, and binaries and object files.
tests/ - This directory contains unit tests and benchmarks for the project. It includes subdirectories for analyzer tests, consumer tests, snapshot tests, and Vogen benchmarks.
tests/AnalyzerTests/ - This subdirectory contains unit tests for the analyzer component of the Vogen library.
tests/bin/ - This directory contains compiled binaries for the tests.
tests/ConsumerTests/ - This subdirectory contains unit tests for the consumer-side components of the Vogen library.
tests/obj/ - This directory contains object files generated during the compilation of the tests.
tests/SnapshotTests/ - This subdirectory contains snapshot tests, which test the output of the code generation and serialization components of the Vogen library.
tests/Vogen.Benchmarks/ - This subdirectory contains benchmarks for the performance of the Vogen library.

Entrypoints

Below are files we identified as entrypoints for to the codebase. This is where the application starts and a good place to start when learning.

/samples/AotTrimmedSample/Program.cs - Entry point for the Ahead-of-Time (AOT) Trimmed sample application.
/samples/Onion/Infra/Program.cs - Entry point for the Onion Infrastructure sample application.
/samples/OrleansExample/Program.cs - Entry point for the Orleans example using Vogen.
/samples/Vogen.Examples/Program.cs - Entry point for various Vogen examples.
/samples/WebApplication/Program.cs - Entry point for the Web Application sample using Vogen.
/samples/WebApplicationConsumer/Program.cs - Entry point for the Web Application Consumer sample.
/tests/Testbench/Program.cs - Entry point for the Testbench sample application.
/tests/Vogen.Benchmarks/Program.cs - Entry point for Vogen benchmark tests.