Skip to content

[scan].exclude and [lint].exclude are separate, are not regexes, and dead patterns are not reported #9

Closed

Description

@ilanh

Summary

lint ignores [scan].exclude, and exclude patterns are literal prefixes or substrings, not regexes. A pattern that matches no files is silently accepted.

Steps to reproduce

  1. In a project with openshell-annotate.toml:
    [scan]
    exclude = ["packages/cli/"]
  2. Run openshell-annotate lint .: findings from packages/cli still appear (context7: 26 warnings until the same list was added under [lint]).
  3. Use exclude = ["^packages/(admin-mcp|cli)/"]: it silently matches nothing (the README says patterns anchor at the repo root, otherwise they are a substring, so this is a literal string).

Expected

  • One shared exclude list: lint inherits [scan].exclude (with [lint].exclude adding to it).
  • A warning when an exclude pattern matches zero files.
  • Documentation that patterns are not regexes (and the exact matching rule).

Actual

Separate lists, no warning, regex-looking patterns silently match nothing.


Found while testing five real projects (see the local candidate report). Numbered #3 in that report.

Activity

  1. added
    bugSomething is not working
    docsDocumentation
    lintopenshell-annotate lint
    scanopenshell-annotate scan
    on Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is not workingdocsDocumentationlintopenshell-annotate lintscanopenshell-annotate scan

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions