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

Ouverte
#248 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
go, javascript, perl, python
Domaine
devtools

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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

Langage dominant
Python
Étoiles
4
Forks
1
Merge moyen
10 h 41 min
PR mergées (30 j)
79

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de cpp-best-practices/project_validator

Toutes les issues de cpp-best-practices/project_validator

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.