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

Aberta
#248 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
45/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
go, javascript, perl, python
Domínio
devtools

Direção de pesquisa

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.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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

Linguagem predominante
Python
Estrelas
4
Forks
1
Merge médio
10h 41min
PRs com merge (30d)
79

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de cpp-best-practices/project_validator

Todas as issues de cpp-best-practices/project_validator

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.