Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
258 changes: 227 additions & 31 deletions .reviewmark.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
# Processed in order; prefix a pattern with '!' to exclude.
needs-review:
- "**/*.cs" # All C# source and test files
- "requirements.yaml" # Root requirements file
- "docs/reqstream/**/*.yaml" # All requirements files
- "docs/design/**/*.md" # All design documents
- "!**/obj/**" # Exclude build output
- "!**/bin/**" # Exclude build output

Expand All @@ -22,53 +25,246 @@ evidence-source:
# Each review-set groups requirements, source, and tests for a coherent software unit
# so that an AI-assisted review can verify consistency across the full evidence chain.
reviews:
# Software unit reviews - one per class
# System-level review
- id: VHDLTest-System
title: Review of VHDLTest System
paths:
- "docs/reqstream/vhdltest-system.yaml"
- "docs/reqstream/platform-requirements.yaml"
- "docs/design/introduction.md"
- "docs/design/system.md"
- "src/**/Program.cs"
- "test/**/IntegrationTests.cs"
- "test/**/Runner.cs"
- "test/**/GlobalUsings.cs"

# Design review
- id: VHDLTest-Design
title: Review of VHDLTest Design Documentation
paths:
- "docs/reqstream/vhdltest-system.yaml"
- "docs/reqstream/platform-requirements.yaml"
- "docs/design/**/*.md"

# All requirements review
- id: VHDLTest-AllRequirements
title: Review of All VHDLTest Requirements
paths:
- "requirements.yaml"
- "docs/reqstream/**/*.yaml"

# OTS review
- id: VHDLTest-OTS
title: Review of VHDLTest OTS Dependencies
paths:
- "docs/reqstream/ots-mstest.yaml"
- "docs/reqstream/ots-reqstream.yaml"
- "docs/reqstream/ots-buildmark.yaml"
- "docs/reqstream/ots-versionmark.yaml"
- "docs/reqstream/ots-sarifmark.yaml"
- "docs/reqstream/ots-sonarmark.yaml"

# Cli subsystem review
- id: VHDLTest-Cli
title: Review of VHDLTest Cli Subsystem
paths:
- "docs/reqstream/cli/subsystem-cli.yaml" # subsystem requirements
- "docs/design/cli/cli.md" # subsystem design
- "test/**/Cli/CliSubsystemTests.cs" # subsystem integration tests

# Context unit review
- id: VHDLTest-Context
title: Review of VHDLTest Context Unit
paths:
- "src/**/Context.cs"
- "test/**/ContextTests.cs"
- "docs/reqstream/cli/unit-context.yaml"
- "docs/design/cli/context.md"
- "src/**/Cli/Context.cs"
- "test/**/Cli/ContextTests.cs"

# ConfigDocument unit review
- id: VHDLTest-ConfigDocument
title: Review of VHDLTest ConfigDocument Unit
paths:
- "docs/reqstream/cli/unit-config-document.yaml"
- "docs/design/cli/config-document.md"
- "src/**/Cli/ConfigDocument.cs"
- "test/**/Cli/ConfigDocumentTests.cs"

# Options unit review
- id: VHDLTest-Options
title: Review of VHDLTest Options Unit
paths:
- "docs/reqstream/cli/unit-options.yaml"
- "docs/design/cli/options.md"
- "src/**/Cli/Options.cs"
- "test/**/Cli/OptionsTests.cs"

# Program unit review
- id: VHDLTest-Program
title: Review of VHDLTest Program Unit
paths:
- "src/**/Program.cs"
- "test/**/UsageTests.cs"
- "test/**/VersionTests.cs"
- "test/**/ExitCodeTests.cs"
- "test/**/Runner.cs"
- "test/**/GlobalUsings.cs"
- "docs/reqstream/unit-program.yaml" # requirements
- "docs/design/program.md" # design
- "src/**/Program.cs" # implementation
- "test/**/ProgramTests.cs" # unit tests

- id: VHDLTest-Validation
title: Review of VHDLTest Validation Unit
# Run subsystem review
- id: VHDLTest-Run
title: Review of VHDLTest Run Subsystem
paths:
- "src/**/Validation.cs"
- "test/**/ValidationTests.cs"
- "docs/reqstream/run/subsystem-run.yaml" # subsystem requirements
- "docs/design/run/run.md" # subsystem design
- "test/**/Run/RunSubsystemTests.cs" # subsystem integration tests

- id: VHDLTest-Config
title: Review of VHDLTest Configuration Units
# RunProcessor unit review
- id: VHDLTest-RunProcessor
title: Review of VHDLTest RunProcessor Unit
paths:
- "src/**/ConfigDocument.cs"
- "src/**/Options.cs"
- "test/**/ConfigDocumentTests.cs"
- "test/**/OptionsTests.cs"
- "docs/reqstream/run/unit-run-processor.yaml" # requirements
- "docs/design/run/run-processor.md" # design
- "src/**/Run/RunProcessor.cs" # implementation
- "test/**/Run/RunProcessorTests.cs" # unit tests

- id: VHDLTest-Run
title: Review of VHDLTest Run Processing Units
# RunProgram unit review
- id: VHDLTest-RunProgram
title: Review of VHDLTest RunProgram Unit
paths:
- "docs/reqstream/run/unit-run-program.yaml" # requirements
- "docs/design/run/run-program.md" # design
- "src/**/Run/RunProgram.cs" # implementation

# RunResults unit review
- id: VHDLTest-RunResults
title: Review of VHDLTest RunResults Unit
paths:
- "src/**/Run/*.cs"
- "test/**/RunProcessorTests.cs"
- "docs/reqstream/run/unit-run-results.yaml" # requirements
- "docs/design/run/run-results.md" # design
- "src/**/Run/RunResults.cs" # implementation

# Run types unit review (RunLine, RunLineRule, RunLineType)
- id: VHDLTest-RunTypes
title: Review of VHDLTest Run Types Unit
paths:
- "docs/reqstream/run/unit-run-types.yaml" # requirements
- "docs/design/run/run-line.md" # design
- "docs/design/run/run-line-rule.md" # design
- "docs/design/run/run-line-type.md" # design
- "src/**/Run/RunLine.cs" # implementation
- "src/**/Run/RunLineRule.cs" # implementation
- "src/**/Run/RunLineType.cs" # implementation

# Results subsystem review
- id: VHDLTest-Results
title: Review of VHDLTest Test Results Units
title: Review of VHDLTest Results Subsystem
paths:
- "docs/reqstream/results/subsystem-results.yaml" # subsystem requirements
- "docs/design/results/results.md" # subsystem design
- "test/**/Results/ResultsSubsystemTests.cs" # subsystem integration tests

# TestResult unit review
- id: VHDLTest-TestResult
title: Review of VHDLTest TestResult Unit
paths:
- "src/**/Results/*.cs"
- "test/**/TestResultTests.cs"
- "test/**/TestResultsTests.cs"
- "docs/reqstream/results/unit-test-result.yaml" # requirements
- "docs/design/results/test-result.md" # design
- "src/**/Results/TestResult.cs" # implementation
- "test/**/Results/TestResultTests.cs" # unit tests

# TestResults unit review
- id: VHDLTest-TestResults
title: Review of VHDLTest TestResults Unit
paths:
- "docs/reqstream/results/unit-test-results.yaml" # requirements
- "docs/design/results/test-results.md" # design
- "src/**/Results/TestResults.cs" # implementation
- "test/**/Results/TestResultsTests.cs" # unit tests

# Simulators subsystem review
- id: VHDLTest-Simulators
title: Review of VHDLTest Simulator Units
title: Review of VHDLTest Simulators Subsystem
paths:
- "docs/reqstream/simulators/subsystem-simulators.yaml" # subsystem requirements
- "docs/design/simulators/simulators.md" # subsystem design
- "docs/design/simulators/simulator.md" # Simulator base class design
- "src/**/Simulators/Simulator.cs" # base class (no dedicated unit review)
- "test/**/Simulators/SimulatorsSubsystemTests.cs" # subsystem integration tests

# SimulatorFactory unit review
- id: VHDLTest-SimulatorFactory
title: Review of VHDLTest SimulatorFactory Unit
paths:
- "docs/reqstream/simulators/unit-simulator-factory.yaml" # requirements
- "docs/design/simulators/simulator-factory.md" # design
- "src/**/Simulators/SimulatorFactory.cs" # implementation
- "test/**/Simulators/SimulatorFactoryTests.cs" # unit tests

# GhdlSimulator unit review
- id: VHDLTest-GhdlSimulator
title: Review of VHDLTest GhdlSimulator Unit
paths:
- "docs/reqstream/simulators/unit-ghdl-simulator.yaml" # requirements
- "docs/design/simulators/ghdl-simulator.md" # design
- "src/**/Simulators/GhdlSimulator.cs" # implementation
- "test/**/Simulators/GhdlSimulatorTests.cs" # unit tests

# NvcSimulator unit review
- id: VHDLTest-NvcSimulator
title: Review of VHDLTest NvcSimulator Unit
paths:
- "docs/reqstream/simulators/unit-nvc-simulator.yaml" # requirements
- "docs/design/simulators/nvc-simulator.md" # design
- "src/**/Simulators/NvcSimulator.cs" # implementation
- "test/**/Simulators/NvcSimulatorTests.cs" # unit tests

# ModelSimSimulator unit review
- id: VHDLTest-ModelSimSimulator
title: Review of VHDLTest ModelSimSimulator Unit
paths:
- "docs/reqstream/simulators/unit-modelsim-simulator.yaml" # requirements
- "docs/design/simulators/modelsim-simulator.md" # design
- "src/**/Simulators/ModelSimSimulator.cs" # implementation
- "test/**/Simulators/ModelSimSimulatorTests.cs" # unit tests

# QuestaSimSimulator unit review
- id: VHDLTest-QuestaSimSimulator
title: Review of VHDLTest QuestaSimSimulator Unit
paths:
- "docs/reqstream/simulators/unit-questasim-simulator.yaml" # requirements
- "docs/design/simulators/questasim-simulator.md" # design
- "src/**/Simulators/QuestaSimSimulator.cs" # implementation
- "test/**/Simulators/QuestaSimSimulatorTests.cs" # unit tests

# VivadoSimulator unit review
- id: VHDLTest-VivadoSimulator
title: Review of VHDLTest VivadoSimulator Unit
paths:
- "docs/reqstream/simulators/unit-vivado-simulator.yaml" # requirements
- "docs/design/simulators/vivado-simulator.md" # design
- "src/**/Simulators/VivadoSimulator.cs" # implementation
- "test/**/Simulators/VivadoSimulatorTests.cs" # unit tests

# ActiveHdlSimulator unit review
- id: VHDLTest-ActiveHdlSimulator
title: Review of VHDLTest ActiveHdlSimulator Unit
paths:
- "docs/reqstream/simulators/unit-active-hdl-simulator.yaml" # requirements
- "docs/design/simulators/active-hdl-simulator.md" # design
- "src/**/Simulators/ActiveHdlSimulator.cs" # implementation
- "test/**/Simulators/ActiveHdlSimulatorTests.cs" # unit tests

# SelfTest subsystem review
- id: VHDLTest-SelfTest
title: Review of VHDLTest SelfTest Subsystem
paths:
- "docs/reqstream/self-test/subsystem-self-test.yaml" # subsystem requirements
- "docs/design/self-test/self-test.md" # subsystem design
- "test/**/SelfTest/ValidationTests.cs" # subsystem integration tests

# Validation unit review
- id: VHDLTest-Validation
title: Review of VHDLTest Validation Unit
paths:
- "src/**/Simulators/*.cs"
- "test/**/*SimulatorTests.cs"
- "test/**/SimulatorFactoryTests.cs"
- "docs/reqstream/self-test/unit-validation.yaml" # requirements
- "docs/design/self-test/validation.md" # design
- "src/**/SelfTest/Validation.cs" # implementation
- "test/**/SelfTest/ValidationTests.cs" # unit/integration tests
21 changes: 21 additions & 0 deletions docs/design/cli/cli.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Cli Subsystem Design

## Overview

The Cli subsystem implements command-line interface handling for VHDLTest. It encompasses
all logic for parsing command-line arguments, reading configuration files, and managing
output channels.

## Units

| Unit | File | Responsibility |
| -------------- | ----------------------- | --------------------------------------------------- |
| Context | `Cli/Context.cs` | Parses command-line arguments and owns I/O channels |
| ConfigDocument | `Cli/ConfigDocument.cs` | Deserializes the YAML test configuration |
| Options | `Cli/Options.cs` | Holds parsed configuration options |

## Interactions

The Cli subsystem is consumed primarily by `Program.cs`, which creates a `Context`
from the raw argument array, reads the config file path from it, then constructs
`Options` from a parsed `ConfigDocument`.
20 changes: 20 additions & 0 deletions docs/design/cli/config-document.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# ConfigDocument Unit Design

## Overview

`ConfigDocument.cs` implements the `ConfigDocument` class, which deserializes the
YAML configuration file that specifies the VHDL test suite to run.

## Responsibilities

- Deserialize YAML configuration using YamlDotNet
- Expose test file lists and simulator name
- Provide a static `Parse` method for loading from a file path

## Data Model

| Property | Type | Description |
| ----------- | ---------- | --------------------------------- |
| `Simulator` | `string?` | Name of simulator to use |
| `Results` | `string?` | Default results file path |
| `Tests` | `string[]` | Array of test bench file patterns |
30 changes: 30 additions & 0 deletions docs/design/cli/context.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Context Unit Design

## Overview

`Context.cs` implements the `Context` class, which is responsible for parsing the
raw command-line argument array and exposing the parsed flags and output channels
to the rest of the application.

## Responsibilities

- Parse `-v`/`--version`, `-?`/`-h`/`--help`, `--silent`, `--verbose`,
`--validate`, `--depth`, `--results`, `--log`, and positional arguments
- Open an optional log-file writer when `--log` is specified
- Expose typed properties for each flag
- Write output to both console and log-file through `WriteLine`/`WriteError`
- Set an error exit code when `WriteError` is called

## Data Model

| Property | Type | Description |
| ---------- | --------- | -------------------------------------------- |
| `Version` | `bool` | True when `--version` or `-v` was passed |
| `Help` | `bool` | True when `--help`, `-h`, or `-?` was passed |
| `Silent` | `bool` | True when `--silent` was passed |
| `Verbose` | `bool` | True when `--verbose` was passed |
| `Validate` | `bool` | True when `--validate` was passed |
| `Depth` | `int` | Heading depth for validation reports |
| `Results` | `string?` | Path to results output file |
| `Config` | `string?` | Path to the YAML configuration file |
| `ExitCode` | `int` | Process exit code (0 = success, 1 = failure) |
18 changes: 18 additions & 0 deletions docs/design/cli/options.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Options Unit Design

## Overview

`Options.cs` implements the `Options` record, which holds the resolved options
for a test run after combining command-line arguments with the configuration file.

## Responsibilities

- Hold the working directory and parsed `ConfigDocument`
- Provide a static `Parse` method that combines `Context` and file system state

## Data Model

| Property | Type | Description |
| ------------------ | ---------------- | --------------------------------------------- |
| `WorkingDirectory` | `string` | Resolved working directory for test execution |
| `Config` | `ConfigDocument` | Deserialized configuration document |
Loading