OCaml: `(flags …)` of an ocamllex stanza or a test fixture's `(env …)` are taken as the project dropping :standard; opam's own-compiler matrix (`ocamlv`) is "1 OCaml version"; `ocaml/setup-ocaml/lint-fmt` is the ecosystem's format check

Aberta
#286 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
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
52/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
github-actions, ocaml, python
Domínio
ci-cd, tooling

Direção de pesquisa

Start in project_validator/ecosystems/ocaml.py: the dune (flags ...) parsing around lines 203-206 treats ocamllex and test-fixture flags as compiler flags, and the setup-ocaml handling near line 298 needs lint-fmt recognition. The matrix check should read ocamlv-style keys with version-shaped values. Done when the repros in the issue (fx_h, fx_g, the ocamlv matrix, and the lint-fmt@v3 workflow) give the expected PASS results without breaking the existing OCaml tests.

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

Descrição

dune: compiler-warnings/warnings-as-errors FAIL "no OCaml warning settings found" although CI tests in the dev profile; the (flags -ml) that "drops :standard" is an ocamllex lexer stanza and (env (_ (flags -w -33))) sits inside test fixtures. opam: "1 OCaml version (default)" while the matrix variable ocamlv drives 11 compiler versions built by opam itself. lwt: ocaml/setup-ocaml/lint-fmt@v3 runs dune build @fmt and fails on unformatted files → "CI does not run ocamlformat".

Evidence from the corpus audit

ocaml/dune / compiler-warnings, warnings-as-errors
  • kind: FALSE_NEGATIVE
  • actual: FAIL: OCaml: no OCaml warning settings found; enable at least dune's dev profile warning set (or -w +a); OCaml: warnings are not treated as errors in CI configuration and the dune files
  • expected: PASS: CI tests in the dev profile (opam exec -- make test, opam exec -- ./dune.exe test ...); the (flags …) fields that "drop :standard" are an ocamllex stanza's lexer flags ((flags -ml)) and (env (_ (flags -w -33))) inside test fixtures, not compiler flags of the product
  • evidence: src/dune_lang/dune:22-24: (ocamllex\n (modules dune_file_script)\n (flags -ml)); also src/dune_rules/dune:42, otherlibs/dune-rpc/dune:9, src/dune_rules/cram/dune:3 (all (flags -ml) of ocamllex); otherlibs/dune-site/test/plugin_require_thread.t/plugin/dune:1: (env (_ (flags -w -33))); .github/workflows/workflow.yml:293: run: opam exec -- make test; project_validator/ecosystems/ocaml.py:203-206: every (flags …) form of a dune file is read as compiler flags
  • repro: dune with (library (name l))\n(ocamllex (modules lexer) (flags -ml)) + workflow run: ./_boot/dune.exe runtest → compiler-warnings FAIL (reproduced in audit/scratch/fx_h; without the ocamllex stanza, fx_g, it passes)
  • confidence: high
ocaml/opam / platform-matrix
  • kind: FALSE_NEGATIVE
  • actual: FAIL: OCaml: CI covers 3 OS(es) (linux, macos, windows), 1 OCaml version(s) (default), 3 combination(s); expected at least 2 OCaml versions (found 1); map names the jobs Build-Linux (4.11.2) ... Build-Linux (5.5.0) yet gives them toolchain OCaml default
  • expected: 11 OCaml versions on Linux and 2 on Windows: the matrix variable ocamlv is the compiler version (opam builds its own compilers, .github/scripts/main/ocaml-cache.sh ${{ matrix.ocamlv }}); the profile knows only setup-ocaml's ocaml-compiler, ocaml/opam: images and opam switch create
  • evidence: .github/workflows/main.yml:114: ocamlv: [ 4.11.2, 4.12.1, 4.13.1, 5.0.0, 5.1.1, 5.2.1, 5.3.0, 5.4.1, trunk, 4.14.4, 5.5.0 ]; :142: run: bash -exu .github/scripts/main/ocaml-cache.sh ${{ runner.os }} ${{ matrix.ocamlv }}; docs/ecosystems/ocaml.md "platform-matrix" lists only setup-ocaml, the docker image and opam switch create
  • repro: matrix ocamlv: [4.14.4, 5.5.0] with a run: passing ${{ matrix.ocamlv }} to a script → "1 OCaml version (default)"
  • confidence: medium (a matrix key named ocaml*/ocamlv with version-shaped values is strong evidence; recognising it is a heuristic)
ocsigen/lwt / code-formatting
  • kind: FALSE_NEGATIVE
  • actual: FAIL component: OCaml: .ocamlformat is defined but CI does not run ocamlformat
  • expected: PASS: ocaml/setup-ocaml/lint-fmt@v3 is the standard OCaml-ecosystem formatting check (it runs dune build @fmt, failing on unformatted files); its sibling lint-opam runs opam-dune-lint
  • evidence: .github/workflows/lint.yml:25-34: lint-fmt:\n ... - uses: ocaml/setup-ocaml@v3\n with:\n ocaml-compiler: 5\n - uses: ocaml/setup-ocaml/lint-fmt@v3; .ocamlformat at the root; project_validator/ecosystems/ocaml.py mentions setup-ocaml only for ocaml-compiler (line 298)
  • repro: .ocamlformat + workflow step uses: ocaml/setup-ocaml/lint-fmt@v3 → "CI does not run ocamlformat"
  • 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.