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

Ouverte
#286 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é
3/5
Temps estimé
1-2 jours
Accessibilité débutants
52/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
github-actions, ocaml, python
Domaine
ci-cd, tooling

Piste de recherche

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.

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

Description

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

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.