Skip to content

Commit 9ef39ed

Browse files
CopilotMalcolmnixon
andcommitted
Bring in changes from TemplateDotNetTool PRs #53, #54, #55
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
1 parent d0e0d2c commit 9ef39ed

File tree

6 files changed

+140
-6
lines changed

6 files changed

+140
-6
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
---
2+
name: ❓ Question / Help
3+
description: Ask a usage question or get help with SonarMark
4+
title: "[Question]: "
5+
labels: ["question"]
6+
assignees: []
7+
body:
8+
- type: markdown
9+
attributes:
10+
value: |
11+
Thanks for reaching out! Please fill out the sections below so we can help you as quickly as possible.
12+
For general discussion, you can also use
13+
[GitHub Discussions](https://github.com/demaconsulting/SonarMark/discussions).
14+
15+
- type: textarea
16+
id: question
17+
attributes:
18+
label: Question
19+
description: A clear and concise description of what you need help with.
20+
placeholder: What would you like to know or understand?
21+
validations:
22+
required: true
23+
24+
- type: textarea
25+
id: what-tried
26+
attributes:
27+
label: What Have You Tried?
28+
description: Describe what you have already attempted, including any code or configuration you have used.
29+
placeholder: |
30+
```bash
31+
sonarmark --server https://sonarcloud.io --project-key my-project
32+
```
33+
render: bash
34+
35+
- type: textarea
36+
id: expected
37+
attributes:
38+
label: Expected Outcome
39+
description: A clear and concise description of what you expected to happen or what you are trying to achieve.
40+
placeholder: Describe the outcome you are looking for...
41+
validations:
42+
required: true
43+
44+
- type: input
45+
id: version
46+
attributes:
47+
label: Tool Version
48+
description: What version of SonarMark are you using?
49+
placeholder: e.g., 1.0.0
50+
validations:
51+
required: true
52+
53+
- type: dropdown
54+
id: dotnet-version
55+
attributes:
56+
label: .NET Version
57+
description: What version of .NET are you using?
58+
options:
59+
- ".NET 8"
60+
- ".NET 9"
61+
- ".NET 10"
62+
- Other (please specify in additional context)
63+
validations:
64+
required: true
65+
66+
- type: textarea
67+
id: additional-context
68+
attributes:
69+
label: Additional Context
70+
description: Add any other context, screenshots, or links that may help answer your question.
71+
placeholder: Any additional information...
72+
73+
- type: checkboxes
74+
id: checklist
75+
attributes:
76+
label: Checklist
77+
description: Please confirm the following
78+
options:
79+
- label: I have searched existing issues and discussions to ensure this has not been answered before
80+
required: true
81+
- label: I have provided a clear description of my question
82+
required: true

.github/workflows/build.yaml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ jobs:
9090

9191
strategy:
9292
matrix:
93-
os: [windows-latest, ubuntu-latest]
93+
os: [windows-latest, ubuntu-latest, macos-latest]
9494

9595
runs-on: ${{ matrix.os }}
9696

@@ -124,8 +124,8 @@ jobs:
124124
run: |
125125
mkdir -p artifacts
126126
echo "Capturing tool versions..."
127-
# Create short job ID: build-win, build-ubuntu
128-
OS_SHORT=$(echo "${{ matrix.os }}" | sed 's/windows-latest/win/;s/ubuntu-latest/ubuntu/')
127+
# Create short job ID: build-windows, build-ubuntu, build-macos
128+
OS_SHORT=$(echo "${{ matrix.os }}" | sed 's/-latest//')
129129
JOB_ID="build-${OS_SHORT}"
130130
dotnet versionmark --capture --job-id "${JOB_ID}" \
131131
--output "artifacts/versionmark-${JOB_ID}.json" -- \
@@ -230,6 +230,7 @@ jobs:
230230
uses: github/codeql-action/init@v4
231231
with:
232232
languages: csharp
233+
build-mode: manual
233234
queries: security-and-quality
234235
config-file: ./.github/codeql-config.yml
235236

@@ -285,7 +286,7 @@ jobs:
285286

286287
strategy:
287288
matrix:
288-
os: [windows-latest, ubuntu-latest]
289+
os: [windows-latest, ubuntu-latest, macos-latest]
289290
dotnet-version: ['8.x', '9.x', '10.x']
290291

291292
steps:
@@ -331,8 +332,8 @@ jobs:
331332
run: |
332333
mkdir -p artifacts
333334
echo "Capturing tool versions..."
334-
# Create short job ID: int-win-8, int-win-9, int-ubuntu-8, etc.
335-
OS_SHORT=$(echo "${{ matrix.os }}" | sed 's/windows-latest/win/;s/ubuntu-latest/ubuntu/')
335+
# Create short job ID: int-windows-8, int-ubuntu-9, int-macos-10, etc.
336+
OS_SHORT=$(echo "${{ matrix.os }}" | sed 's/-latest//')
336337
DOTNET_SHORT=$(echo "${{ matrix.dotnet-version }}" | sed 's/\.x$//')
337338
JOB_ID="int-${OS_SHORT}-${DOTNET_SHORT}"
338339
dotnet versionmark --capture --job-id "${JOB_ID}" \

AGENTS.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@ SonarQube/SonarCloud analysis results.
1212
- **Code Quality Agent** - Enforces linting, static analysis, and security standards
1313
- **Repo Consistency Agent** - Ensures SonarMark remains consistent with TemplateDotNetTool template patterns
1414

15+
## Agent Selection Guide
16+
17+
- Fix a bug → **Software Developer**
18+
- Add a new feature → **Requirements Agent****Software Developer****Test Developer**
19+
- Write a test → **Test Developer**
20+
- Fix linting or static analysis issues → **Code Quality Agent**
21+
- Update documentation → **Technical Writer**
22+
- Add or update requirements → **Requirements Agent**
23+
- Ensure test coverage linkage in `requirements.yaml`**Requirements Agent**
24+
- Run security scanning or address CodeQL alerts → **Code Quality Agent**
25+
- Propagate template changes → **Repo Consistency Agent**
26+
1527
## Tech Stack
1628

1729
- C# (latest), .NET 8.0/9.0/10.0, MSTest, dotnet CLI, NuGet
@@ -38,6 +50,7 @@ evidence. This is critical for platform and framework requirements - **do not re
3850

3951
- `windows@TestName` - proves the test passed on a Windows platform
4052
- `ubuntu@TestName` - proves the test passed on a Linux (Ubuntu) platform
53+
- `macos@TestName` - proves the test passed on a macOS platform
4154
- `net8.0@TestName` - proves the test passed under the .NET 8 target framework
4255
- `net9.0@TestName` - proves the test passed under the .NET 9 target framework
4356
- `net10.0@TestName` - proves the test passed under the .NET 10 target framework

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ documentation workflows.
2828
- 🌐 **Multi-Platform** - Support for .NET 8, 9, and 10 across Windows, Linux, and macOS
2929
-**Self-Validation** - Built-in tests to verify functionality without requiring a live server
3030
- 🔗 **API Integration** - Direct integration with SonarQube and SonarCloud REST APIs
31+
- 🔍 **Linting Enforcement** - markdownlint, cspell, and yamllint enforced on every CI run
32+
- 📋 **Continuous Compliance** - Compliance evidence generated automatically on every CI run, following
33+
the [Continuous Compliance][link-continuous-compliance] methodology
34+
- 🗂️ **Requirements Traceability** - Requirements linked to passing tests with auto-generated trace matrix
3135

3236
## Installation
3337

@@ -271,3 +275,4 @@ SonarMark is built with the following open-source projects:
271275
[link-quality]: https://sonarcloud.io/dashboard?id=demaconsulting_SonarMark
272276
[link-security]: https://sonarcloud.io/dashboard?id=demaconsulting_SonarMark
273277
[link-nuget]: https://www.nuget.org/packages/DemaConsulting.SonarMark
278+
[link-continuous-compliance]: https://github.com/demaconsulting/ContinuousCompliance

docs/guide/guide.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,20 @@ This user guide covers:
3030
- **CI/CD Integration**: Support for enforcement mode to fail builds on quality gate failures
3131
- **Multi-Platform**: Works on Windows, Linux, and macOS with .NET 8, 9, or 10
3232

33+
# Continuous Compliance
34+
35+
SonarMark follows the [Continuous Compliance][continuous-compliance] methodology, which ensures
36+
compliance evidence is generated automatically on every CI run.
37+
38+
## Key Practices
39+
40+
- **Requirements Traceability**: Every requirement is linked to passing tests, and a trace matrix is
41+
auto-generated on each release
42+
- **Linting Enforcement**: markdownlint, cspell, and yamllint are enforced before any build proceeds
43+
- **Automated Audit Documentation**: Each release ships with generated requirements, justifications,
44+
trace matrix, and quality reports
45+
- **CodeQL and SonarCloud**: Security and quality analysis runs on every build
46+
3347
# Installation
3448

3549
## Prerequisites
@@ -649,3 +663,4 @@ fi
649663
[security]: https://github.com/demaconsulting/SonarMark/blob/main/SECURITY.md
650664
[sonarqube-docs]: https://docs.sonarqube.org/latest/
651665
[sonarcloud-docs]: https://docs.sonarcloud.io/
666+
[continuous-compliance]: https://github.com/demaconsulting/ContinuousCompliance

requirements.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
# Source filter prefixes:
2121
# windows@TestName - proves the test passed on a Windows platform
2222
# ubuntu@TestName - proves the test passed on a Linux (Ubuntu) platform
23+
# macos@TestName - proves the test passed on a macOS platform
2324
# net8.0@TestName - proves the test passed under the .NET 8 target framework
2425
# net9.0@TestName - proves the test passed under the .NET 9 target framework
2526
# net10.0@TestName - proves the test passed under the .NET 10 target framework
@@ -311,6 +312,23 @@ sections:
311312
- ubuntu@SonarMark_HotSpotsRetrieval
312313
- ubuntu@SonarMark_MarkdownReportGeneration
313314

315+
- id: SonarMark-Plt-MacOS
316+
title: The tool shall run on macOS operating systems.
317+
justification: |
318+
macOS is a major development platform for developers using Apple hardware. Supporting macOS
319+
ensures the tool can be used in macOS-based development environments and CI/CD systems,
320+
broadening the tool's reach across all major desktop development platforms.
321+
# Test source pattern "macos@" ensures these tests ran on macOS.
322+
# This filtering is necessary to prove macOS OS functionality.
323+
tests:
324+
- macos@IntegrationTest_VersionFlag_OutputsVersion
325+
- macos@IntegrationTest_HelpFlag_OutputsUsageInformation
326+
- macos@IntegrationTest_ReportParameter_IsAccepted
327+
- macos@SonarMark_QualityGateRetrieval
328+
- macos@SonarMark_IssuesRetrieval
329+
- macos@SonarMark_HotSpotsRetrieval
330+
- macos@SonarMark_MarkdownReportGeneration
331+
314332
- id: SonarMark-Plt-Net8
315333
title: The tool shall support .NET 8.0 runtime.
316334
justification: |

0 commit comments

Comments
 (0)