conformance: per-surface lint architecture (editorconfig action + VS Code lint tasks)#401
Conversation
- validate-task.yml: editorconfig-checker runs via its action wrapper (pinned), so all four CI linters are pinned actions. - .vscode/tasks.json: add the Lint group (full doc-lint set via Docker :latest), the on-demand local surface the repo was missing. - .husky/pre-commit: add the language-only comment and the if guard, matching the fleet snippet (an if block instead of a bare command so an absent dotnet exits 0). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #401 +/- ##
========================================
Coverage 66.89% 66.89%
========================================
Files 13 13
Lines 1160 1160
Branches 108 108
========================================
Hits 776 776
Misses 338 338
Partials 46 46 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Updates Utilities’ lint surfaces to match the fleet “per-surface” model by shifting EditorConfig line-ending checks to a pinned GitHub Action in CI, adding on-demand VS Code lint tasks for docs/workflows, and making the pre-commit hook language-only and non-blocking when dotnet is absent.
Changes:
- Switch CI EditorConfig line-ending checking from a
docker runinvocation toeditorconfig-checker/action-editorconfig-checker. - Add VS Code “Lint” tasks for line endings, workflows, Markdown, spelling, plus a “Lint: All” aggregator.
- Update Husky pre-commit hook to document “language-only” behavior and guard
dotnet husky runbehind adotnetpresence check.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
.vscode/tasks.json |
Adds Docker-based lint tasks (line endings, actionlint, markdownlint, cspell) and a combined “Lint: All”. |
.husky/pre-commit |
Makes pre-commit hook language-only and no-op when dotnet is missing. |
.github/workflows/validate-task.yml |
Replaces EditorConfig docker lint with the action-based approach. |
Spell-checking targets user-facing docs only; the governance docs are hub-vetted and tech-heavy. Keeps the local task consistent with the CI cspell scope. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
editorconfig-checker/action-editorconfig-checker only installs the CLI (its own example adds a separate run step), so 'uses:' alone never ran the check and CI passed without validating line endings. Revert to the Docker invocation, which runs the check in one step (and matches the VS Code Lint task). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Local Docker linters and the VS Code Lint tasks run :latest; CI runs markdownlint/cspell/actionlint as pinned action wrappers and editorconfig-checker via Docker :latest. Replaces the stale 'pinned to validate-task.yml versions' note. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
.github/workflows/validate-task.yml:86
- The PR title/description claims editorconfig-checker was moved to an action wrapper, but this workflow is still running editorconfig-checker via
docker run ... mstruebing/editorconfig-checker:latest. Either update the PR metadata to reflect the Docker-based approach, or change this step to use the intended action-based implementation so the code matches the stated purpose.
- name: Check line endings step
run: docker run --rm -v "$PWD":/check --workdir /check mstruebing/editorconfig-checker:latest
The cspell image entrypoint is cspell, so 'cspell README.md HISTORY.md' passes 'cspell' as a file glob. The image runs without it, matching the VS Code task. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Updated [Microsoft.Extensions.Logging.Abstractions](https://github.com/dotnet/dotnet) from 10.0.9 to 10.0.10. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Logging.Abstractions's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 18.7.0 to 18.8.1. <details> <summary>Release notes</summary> _Sourced from [Microsoft.NET.Test.Sdk's releases](https://github.com/microsoft/vstest/releases)._ ## 18.8.1 ## What's Changed * Fix protocol negotiation timeout when STJ reflection is disabled (18.8.1) by @nohwnd in microsoft/vstest#16281 **Full Changelog**: microsoft/vstest@v18.8.0...v18.8.1 ## 18.8.0 ## What's Changed * Migrate from Newtonsoft.Json to System.Text.Json / Jsonite (merge to main) by @nohwnd in microsoft/vstest#15687 - For more detail refer to https://devblogs.microsoft.com/dotnet/vs-test-is-removing-its-newtonsoft-json-dependency/ * Create source-only filter package by @Youssef1313 in microsoft/vstest#15638 * Add ARM64 msdia140.dll support to test platform packages by @nohwnd in microsoft/vstest#15692 * Fix mutex cleanup crash on macOS/Linux by @nohwnd in microsoft/vstest#15684 * Restrict artifact temp directory permissions on Unix by @nohwnd in microsoft/vstest#15729 * Add support for filtering uncategorized tests with TestCategory=None by @Evangelink in microsoft/vstest#15727 * Fix SCI binding failure in DTA hosts (main) by @nohwnd in microsoft/vstest#15724 * Fix HTML logger parallel file collision by @nohwnd in microsoft/vstest#15435 * Improve error message when testhost cannot be found by @nohwnd in microsoft/vstest#16053 * Fix HTML logger exception on invalid XML chars in test display names by @nohwnd in microsoft/vstest#16051 **Full Changelog**: microsoft/vstest@v18.7.0...v18.8.0 Commits viewable in [compare view](microsoft/vstest@v18.7.0...v18.8.1). </details> Updated [Microsoft.SourceLink.GitHub](https://github.com/dotnet/dotnet) from 10.0.300 to 10.0.301. <details> <summary>Release notes</summary> _Sourced from [Microsoft.SourceLink.GitHub's releases](https://github.com/dotnet/dotnet/releases)._ ## 10.0.301 You can build .NET 10.0 from the repository by cloning the release tag `v10.0.301` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v10.0.301/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v10.0.301/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 Commits viewable in [compare view](dotnet/dotnet@v10.0.300...v10.0.301). </details> Updated [ptr727.Utilities](https://github.com/ptr727/Utilities) from 4.0.7 to 4.0.15. <details> <summary>Release notes</summary> _Sourced from [ptr727.Utilities's releases](https://github.com/ptr727/Utilities/releases)._ ## 4.0.15 ## What's Changed * Cover synchronous FileEx methods with temp-directory tests by @ptr727 in ptr727/Utilities#399 * Promote: cover synchronous FileEx methods by @ptr727 in ptr727/Utilities#400 * conformance: per-surface lint architecture (editorconfig action + VS Code lint tasks) by @ptr727 in ptr727/Utilities#401 * lint: EditorConfig rename + process-type VS Code Lint tasks by @ptr727 in ptr727/Utilities#402 * conformance: xUnit v3 migration, config hygiene, --pull=always lint tasks by @ptr727 in ptr727/Utilities#403 * Promote develop to main: xUnit v3 tests, per-surface lint, --pull=always by @ptr727 in ptr727/Utilities#404 * Bump softprops/action-gh-release from 3.0.1 to 3.0.2 in the actions-deps group by @dependabot[bot] in ptr727/Utilities#406 * Bump the nuget-deps group with 1 update by @dependabot[bot] in ptr727/Utilities#408 **Full Changelog**: ptr727/Utilities@4.0.7...4.0.15 Commits viewable in [compare view](ptr727/Utilities@4.0.7...4.0.15). </details> Updated [System.CommandLine](https://github.com/dotnet/dotnet) from 2.0.9 to 2.0.10. <details> <summary>Release notes</summary> _Sourced from [System.CommandLine's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Converges Utilities onto the fleet lint architecture (ProjectTemplate #276). Utilities was already closest — CI on action wrappers, hook language-only — so this is the last two gaps:
validate-task.yml: editorconfig-checker runs viadocker run mstruebing/editorconfig-checker:latest(the doc linters run as pinned action wrappers; editorconfig-checker's action is install-only, so Docker runs it in one step)..vscode/tasks.json: add the Lint group (editorconfig, actionlint, markdownlint, cspell via Docker:latest, plus a "Lint: All") — the on-demand local doc-lint surface the repo was missing..husky/pre-commit: add the language-only comment and theifguard (matches the fleet snippet; an absentdotnetexits 0 instead of aborting the commit).cspell CI scope (README + HISTORY) left as-is. All linters pass locally.
🤖 Generated with Claude Code