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

Aperta
#248 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
go, javascript, perl, python
Ambito
devtools

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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

Lingua principale
Python
Stelle
4
Fork
1
Merge medio
10h 41m
PR unite (30g)
79

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di cpp-best-practices/project_validator

Tutte le issue di cpp-best-practices/project_validator

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.