compiler-warnings wording: "-W error" when the setting is pytest filterwarnings, "no Perl pragmas found" when 112 of 116 modules have them, "no JavaScript linters found" when static-analysis credits oxlint/eslint in the same run

Offen
#248 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
45/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Bereich
devtools

Rechercherichtung

Start with the Perl check in project_validator/ecosystems/perl.py (lines 124-149), where _every_module ignores test-fixture roles and _IMPLIES_BOTH is incomplete, then compare the Python wording in ecosystems/python/__init__.py around lines 322-326. Reproduce the Perl case with a lib/Foo.pm plus t/lib/Fixture.pm fixture and check whether the FAIL names the offending modules. Done when the pytest filterwarnings message names the actual setting and the linter messages agree with static-analysis output for oxlint, eslint and staticcheck.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

httpx/flask/black/pytest/fastapi/pydantic are told "strict Python warning settings are enabled: -W error" for filterwarnings = ["error"] (none passes -W error), and the sentence opens a FAIL; the four Perl projects FAIL "no Perl pragmas and lints found" because 1–4 test fixtures or bundled inc/ modules lack use strict while every product module has it (name the modules); vite FAILs "no JavaScript linters found; enable at least eslint" while static-analysis credits oxlint; graphql-eslint "no JavaScript linters found" while eslint is configured and scripted; toml-test "Go: no static analyzer runs" though staticcheck is seen.

Evidence from the corpus audit

toml-lang/toml-test / static-analysis
  • kind: MESSAGE
  • actual: FAIL: Go: no static analyzer runs
  • expected: a message that acknowledges staticcheck runs (the validator does see it: compiler-warnings says only
    go vet is missing) and that the check wants golangci-lint's extra linters; "no static analyzer runs" is false.
  • evidence: .github/workflows/test.yml:9: - uses: 'dominikh/staticcheck-action@v1'; validator
    project_validator/ecosystems/go.py:335-343: static-analysis asks only for golangci-lint run.
  • repro: workflow with uses: dominikh/staticcheck-action@v1.
  • confidence: medium
dimaMachina/graphql-eslint / compiler-warnings
  • kind: MESSAGE
  • actual: FAIL: no JavaScript linters found; enable at least eslint
  • expected: a message consistent with static-analysis in the same run: eslint is configured (.eslintrc.cjs, ...) but does not run (eslint is found: configured and scripted; what is unknown is whether the reusable workflow runs it).
  • evidence: .eslintrc.cjs:1-3: module.exports = { / ignorePatterns: [...], / extends: ['@theguild', ...; package.json:15,18: "ci:lint": "pnpm lint --output-file eslint_report.json --format json", / "lint": "ESLINT_USE_FLAT_CONFIG=false eslint --ignore-path .gitignore --cache .",; .github/workflows/test.yml:12-14: uses: the-guild-org/shared-config/.github/workflows/lint.yml@main / with: / script: pnpm ci:lint
  • evidence (validator): the strict .txt correctly says ERROR whether the strict JavaScript linters are enabled is unknown; with --allow-unknown the FAIL says "no ... linters found" although static-analysis in the same run says eslint is configured (.eslintrc.cjs, ...) but does not run.
  • repro: .eslintrc.cjs + package.json lint script + a workflow whose only job uses: an external reusable workflow; run with --allow-unknown.
  • confidence: medium
vitejs/vite / compiler-warnings
  • kind: FALSE_NEGATIVE
  • actual: FAIL: JavaScript/TypeScript: no JavaScript linters found; enable at least eslint while static-analysis in the same run says JavaScript/TypeScript: oxlint runs
  • expected: PASS: oxlint runs in CI (pnpm lint) and is a JavaScript linter the validator knows.
  • evidence: package.json:24: "lint": "oxlint ."; CI Lint: node-26, ubuntu-latest job runs it; validator ecosystems/javascript/analysis.py:50-53
    declares name="oxlint" for static analysis, but the compiler-warnings linter set (docs: "eslint, biome lint / biome ci, or deno lint") omits oxlint.
  • repro: package.json {"scripts":{"lint":"oxlint ."}}, .oxlintrc.json, step run: pnpm lint.
  • confidence: medium (the two checks contradict each other; which is intended is a policy question)
mojolicious/mojo, Perl-Critic/Perl-Critic, houseabsolute/perl-code-tidyall, rjbs/Dist-Zilla / compiler-warnings
  • kind: FALSE_NEGATIVE
  • actual: FAIL: Perl: no Perl pragmas and lints found; enable at least use strict and use warnings in every module
    (Perl-Critic: missing Perl pragmas and lints: use strict and use warnings in every module)
  • expected: PASS (or FAIL naming the files): every product module passes; the only modules without use strict are
    test fixtures and bundled code: mojo 4 files under t/ (all 112 lib/**/*.pm pass), Perl-Critic
    inc/Devel/AssertOS.pm (bundled third-party inc/) and t/06_violation.d/source/Line.pm (not even Perl),
    tidyall 18 t/lib/TestFor/**/*.pm which use Test::Class::Most (it turns strict and warnings on), Dist-Zilla
    corpus/dist/** fixtures plus lib/ modules that use an in-repo pragma bundle.
  • evidence: mojo t/mojolicious/lib/MojoliciousTest/PODTest.pm:1-3: package MojoliciousTest::PODTest; / `` / 1;;
    mojo `t/mojolicious/lib/MojoliciousTest/Controller/Foo/Bar.pm:2`: `use Mojolicious::Controller -base;`;
    Perl-Critic `t/06_violation.d/source/Line.pm:1-2`: `foo` / `#line 57 Thingy.pm`; tidyall
    `t/lib/TestFor/Code/TidyAll/Basic.pm:13`: `use Test::Class::Most parent => 'TestHelper::Test::Class';`; Dist-Zilla
    `lib/Dist/Zilla/App.pm:4`: `use Dist::Zilla::Pragmas;` and `lib/Dist/Zilla/Pragmas.pm:12-13`: `strict->import;` /
    `warnings->import;`; validator `project_validator/facts/roles.py:27` `_ROLES` test directories are `("test",
    "tests", "testing", "testdata", "spec", "specs", "tests", "fixtures")` (no `t`, `xt`, `inc`, `corpus`);
    `project_validator/ecosystems/perl.py:144-149` `_every_module` judges every `Setting` of tool "Perl modules" with no
    role filter and `project_validator/ecosystems/perl.py:124-127` `_IMPLIES_BOTH` lacks `Test::Class::Most`,
    `Test::Class::Moose`, `Test::Most`.
  • repro: lib/Foo.pm with strict+warnings, t/lib/Fixture.pm with package Fixture; 1; → FAIL "no Perl pragmas and
    lints found" (reproduced in repro-perl).
  • confidence: high (fixtures); medium (in-repo pragma bundle, which needs following use to a module in lib/)
mojolicious/mojo, Perl-Critic/Perl-Critic, houseabsolute/perl-code-tidyall, rjbs/Dist-Zilla / compiler-warnings
  • kind: MESSAGE
  • actual: FAIL: Perl: no Perl pragmas and lints found; enable at least use strict and use warnings in every module, perlcritic
  • expected: FAIL naming the module(s) that lack the pragmas ("3 of 116 modules lack use strict: t/...") — the
    all-or-nothing requirement gives the user nothing to act on, and "no ... found" is false when 112 of 116 modules
    have them.
  • evidence: project_validator/ecosystems/perl.py:144-149: if paths and all(setting.value for setting in found): yield Evidence(f"{len(paths)} module(s), every one") — evidence only on success; the facts carry the failing paths
    (--facts: {"origin": "t/mojolicious/lib/MojoliciousTest/PODTest.pm:strict", "value": false}).
  • repro: as above.
  • confidence: high
all projects with pytest `filterwarnings = ["error"] / compiler-warnings
  • kind: MESSAGE
  • actual: "strict Python warning settings are enabled: -W error" (httpx, flask, black, pytest, fastapi, pydantic);
    in httpx/fastapi/pydantic this sentence sits inside a FAIL whose failure belongs to Shell/JavaScript.
  • expected: name what was found (filterwarnings = ["error"] in [tool.pytest.ini_options]), since none of these
    passes -W error; and a FAIL message should not open with "strict ... are enabled".
  • evidence: encode__httpx/pyproject.toml:119: filterwarnings = [ (next line "error",);
    pallets__flask/pyproject.toml:108; psf__black/pyproject.toml:217: filterwarnings = ["error"];
    fastapi__fastapi/pyproject.toml:253; pydantic__pydantic/pyproject.toml:188. Validator:
    ecosystems/python/__init__.py:322-326 one pattern named "-W error" covers -W error, PYTHONWARNINGS and
    filterwarnings.
  • repro: pyproject with filterwarnings = ["error"] only.
  • confidence: high

Found by the regression-corpus audit (235 real repositories, one or more per ecosystem profile; corpus and expected results in corpus/). Evidence is quoted from the audited checkouts at the commits pinned in corpus/projects.toml; <checkouts>/<owner>__<repo> is such a checkout.

🤖 Generated with Claude Code

https://claude.ai/code/session_01ByTXNqDWdM7HzezrFtEvQt

Vorherrschende Sprache
Python
Sterne
4
Forks
1
Ø Merge
10 Std. 41 Min.
Gemergte PRs (30 T.)
79

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus cpp-best-practices/project_validator

Alle Issues in cpp-best-practices/project_validator

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.