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

Đang mở
#286 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
52/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
github-actions, ocaml, python
Lĩnh vực
ci-cd, tooling

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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

Ngôn ngữ chính
Python
Star
4
Fork
1
Merge trung bình
10 giờ 41 phút
Pull request đã merge (30 ngày)
79

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của cpp-best-practices/project_validator

Tất cả issue của cpp-best-practices/project_validator

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.