|
| 1 | +# Repository Guidelines |
| 2 | + |
| 3 | +## Project Structure & Module Organization |
| 4 | +- `Src/` holds all production code. Core library lives in `Src/FastData`, generators in `Src/FastData.Generator*`, CLI in `Src/FastData.Cli`, and source generator in `Src/FastData.SourceGenerator`. |
| 5 | +- Tests live in `Src/*Tests` (e.g., `Src/FastData.Tests`, `Src/FastData.Generator.CSharp.Tests`). Benchmarks are under `Src/*Benchmarks`. |
| 6 | +- Shared test utilities are in `Src/FastData.InternalShared`. Examples are in `Src/FastData.Examples` and `Src/FastData.SourceGenerator.Examples`. |
| 7 | +- Documentation is under `Docs/`, and build/publish scripts are in `Scripts/`. |
| 8 | + |
| 9 | +## Build, Test, and Development Commands |
| 10 | +- `dotnet build FastData.sln -c Debug` builds the full solution. |
| 11 | +- `pwsh Scripts/Build.ps1` runs the scripted build (Debug by default). |
| 12 | +- `dotnet test FastData.sln -c Debug` runs all test projects. |
| 13 | +- `dotnet run -c Release --project Src/FastData.Benchmarks/FastData.Benchmarks.csproj` runs BenchmarkDotNet benchmarks. |
| 14 | + |
| 15 | +## Coding Style & Naming Conventions |
| 16 | +- Follow `.editorconfig`: C# uses 4-space indentation and file-scoped namespaces. |
| 17 | +- Prefer explicit types over `var` (see `csharp_style_var_* = false`). |
| 18 | +- Avoid adding trailing newlines; trim trailing whitespace on save. |
| 19 | + |
| 20 | +## Testing Guidelines |
| 21 | +- Tests use xUnit v3 (via `Microsoft.NET.Test.Sdk`). |
| 22 | +- Snapshot-like expectations using Verify live under `Src/*Tests/Verify` as `.verified.txt` files. |
| 23 | +- Add tests alongside the relevant `*Tests` project and keep naming aligned with existing patterns (e.g., `FeatureTests`, `VectorTests`). |
| 24 | + |
| 25 | +## Local Configuration |
| 26 | +- `Locals/` contains optional, machine-specific MSBuild overrides. Do not commit secrets or environment-specific paths. |
| 27 | + |
| 28 | +## Others |
| 29 | +- Don't touch public API files PublicAPI.Shipped.txt and PublicAPI.Unshipped.txt; they are auto-generated. |
0 commit comments