--map reports a language and its suffix as unrecognised at once (CUDA/.cu, Objective-C/.m) and lists files the profiles read (.freeze, .xctestplan, .resolved, .Plugin, .rda, .eex, .asciidoc, .tftpl, .zsh-theme)

オープン
#241 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
erlang, java, python, r, shell, swift, terraform, xml
領域
tooling

調査の方向性

The suffix tables are in project_validator/ecosystems/beam.py (around line 516), terraform.py (around lines 171-172) and swift.py (the XCODE_TEST_SETTINGS and PACKAGE_RESOLVED readers); the upper-case .XSD mismatch is in facts/structure.py (around line 214) and xml_schemas.py. Start by choosing one unrecognised suffix, such as .tftpl, and claiming it in its profile, then run --map on a small fixture to see it leave unrecognised_suffixes. Several items are policy questions (whether a language and its suffix can both be reported, and whether rchk counts as static analysis), so confirm the direction with a maintainer before editing.

索引モデルが issue の本文から書いたものです。

説明

glfw lists languages: ["C", "Objective-C"] and .m ×5 unrecognised; llama.cpp CUDA and .cu ×209. cabal.project.freeze (a documented Haskell lock file), *.xctestplan and Package.resolved (read by the Swift profile), META-INF/services/*.Plugin (Java ServiceLoader files), .rda/.rds/.RData/.Rraw/.Rout.save/Makevars.win (R), .eex/.heex/.app.src/.config/.spec/.asciidoc/.cheatmd (BEAM), .tftpl/.tpl (Terraform templates), .zsh-theme/.zunit, .feature (Cucumber) are reported as unknown suffixes. Either the profile claims them or the language is not claimed.

Evidence from the corpus audit

ninenines/cowboy, elixir-ecto/ecto, phoenixframework/phoenix / detection (BEAM-ecosystem suffixes)
  • kind: DETECTION
  • actual: unrecognised suffixes: cowboy .asciidoc x151, .config x15, .ezdoc x3, .app x1, .spec x1 (CT spec),
    .dtl x1; phoenix .eex x156, .cheatmd x1; ecto .cheatmd x2
  • expected: .eex/.heex/.leex (EEx templates) and .app.src/.config/.spec (Erlang terms) belong to the BEAM
    profile; .cheatmd is an ex_doc cheatsheet (documentation); .asciidoc is documentation (see the README finding).
  • evidence: the unrecognised_suffixes arrays in the three .map.json files; project_validator/ecosystems/beam.py:516:
    source_suffixes={".ex": ELIXIR, ".exs": ELIXIR, ".erl": ERLANG, ".hrl": ERLANG}
  • repro: a Mix project with lib/x.html.heex and guides/cheatsheets/x.cheatmd
  • confidence: medium (low impact; data-wellformed/committed-artifacts could use .config/.app)
glfw/glfw, ggml-org/llama.cpp / detection (languages vs suffixes)
  • kind: MESSAGE
  • actual: glfw .map.json lists languages: ["C", "Objective-C"] and unrecognised_suffixes: [{".m": 5}]; llama.cpp lists CUDA as a language and .cu (209), .cuh (96) as unrecognised.
  • expected: a language the map names should not also be reported as unrecognised files (or the language should not be claimed).
  • evidence: glfw__glfw.map.json: "languages": ["C", "Objective-C"], {"suffix": ".m", "files": 5}; ggml-org__llama.cpp.map.json: "CUDA" in languages, {"suffix": ".cu", "files": 209}.
  • repro: a CMake project with project(x C OBJC) and one .m file.
  • confidence: low
PostgREST/postgrest, koalaman/shellcheck / map (unrecognised suffix .freeze)
  • kind: MESSAGE
  • actual: .map.json unrecognised_suffixes: {"suffix": ".freeze", "files": 1} in both projects, while PostgREST's dependency-management says locked in cabal.project.freeze, stack.yaml.lock
  • expected: cabal.project.freeze is a known Haskell lock file (docs/ecosystems/haskell.md: "commits cabal.project.freeze") and should not be listed as unrecognised; shellcheck's is builders/linux.armv6hf/cabal.project.freeze.
  • evidence: PostgREST__postgrest/cabal.project.freeze (root); koalaman__shellcheck/builders/linux.armv6hf/cabal.project.freeze
  • repro: a Cabal package with cabal.project.freeze; run --map
  • confidence: medium
Rdatatable/data.table, tidyverse/dplyr, r-lib/testthat / detection (R data files and R-specific analyzers)
  • kind: UNSUPPORTED
  • actual: unrecognised_suffixes: data.table .Rraw (12), .Rdata (4), .RData (2), .save (2), .win (1 = Makevars.win); dplyr .rda (5); testthat .rds, .win. data.table's rchk.yaml (rchk, the R-API static analyser for C code), the Coccinelle lint job and .ci/lint.R custom linters are not recognised as static analysis.
  • expected: .rda/.rds/.RData/.Rdata (serialised R data under data/, inst/), .Rraw (data.table's test scripts), .Rout.save/Makevars.win are files of the R ecosystem and should not be reported as unrecognised; rchk is the standard analyser for R packages with C code and would be a natural static-analysis tool for R's native code.
  • evidence: data/starwars.rda (dplyr); inst/tests/tests.Rraw, src/Makevars.win (data.table); .github/workflows/rchk.yaml:46-56: - name: Run rchk ... - name: Confirm that rchk has no errors; .github/workflows/code-quality.yaml:74-78: Install Coccinelle / run: /usr/bin/sudo apt-get -y install coccinelle / - name: Lint.
  • repro: an R package with data/x.rda; expect no unrecognised suffix.
  • confidence: medium
ohmyzsh/ohmyzsh / detection, tests-run
  • kind: UNSUPPORTED
  • actual: .map.json unrecognised_suffixes: .zsh-theme x144, .zunit x3; Shell: no tests found
  • expected: .zsh-theme files are zsh scripts (Shell); plugins/dotenv/tests/*.zunit are zunit tests (CI does not run them, so the FAIL stands, but the message "no tests found" is wrong).
  • evidence: themes/*.zsh-theme (144 files); plugins/dotenv/tests/basic-parsing.zunit, security.zunit, compatibility.zunit; .github/workflows/main.yml:36: zsh -n "$file" || return 1 (syntax check only).
  • repro: a tests/a.zunit file.
  • confidence: low
flyway/flyway / detection (META-INF/services)
  • kind: DETECTION
  • actual: map unrecognised_suffixes: .Plugin 40 files
  • expected: Java ServiceLoader provider files under META-INF/services/ are JVM resources, not unknown suffixes
  • evidence: flyway-commandline/src/main/resources/META-INF/services/org.flywaydb.core.extensibility.Plugin;
    validator: grep -rn META-INF project_validator/ecosystems/jvm/ returns nothing
  • repro: src/main/resources/META-INF/services/com.example.Spi
  • confidence: medium
Alamofire/Alamofire, pointfreeco/swift-composable-architecture, realm/SwiftLint / detection (unrecognised suffixes the profile reads)
  • kind: MESSAGE
  • actual: --map unrecognised_suffixes lists .xctestplan (Alamofire 5 files, TCA 1) and .resolved (TCA 2,
    SwiftLint 1), yet the Swift profile reads *.xctestplan for coverage settings and Package.resolved as the
    lockfile (dependency-management PASS cites Package.resolved).
  • expected: files a settings/lockfile reader consumes are recognised, not reported as unknown suffixes.
  • evidence: project_validator/ecosystems/swift.py:179: XCODE_TEST_SETTINGS = SettingsReader(name="Xcode", files=("*.xcscheme", "*.xctestplan"), ...);
    swift.py:390: PACKAGE_RESOLVED = lockfile_reader(manager="SwiftPM", files=("Package.resolved",));
    Alamofire Tests/Test Plans/iOS.xctestplan; SwiftLint ./Package.resolved.
  • repro: a Swift package with Package.resolved committed; run --map.
  • confidence: low
terraform-google-modules/terraform-google-kubernetes-engine, terraform-aws-modules/terraform-aws-eks / detection (suffixes)
  • kind: UNSUPPORTED
  • actual: map unrecognised_suffixes: [{".tmpl": 16}, {".tftpl": 1}] (GKE), [{".tpl": 8}] (eks)
  • expected: .tftpl is Terraform's documented template-file suffix (for templatefile()), and .tpl is its older convention; a Terraform profile should claim them (as templates, role template).
  • evidence: examples/safer_cluster_iap_bastion/templates/startup-script.tftpl; eks templates/al2023_user_data.tpl. Validator: ecosystems/terraform.py:171-172: source_suffixes={".tf": ..., ".tofu": ..., ".tfvars": ...}, ambiguous_suffixes={".hcl": TERRAFORM}.
  • repro: templates/x.tftpl in a Terraform project; expect it recognised, not listed as unrecognised.
  • confidence: medium
ISO-TC211/XML / detection (.XSD suffix case)
  • kind: DETECTION
  • actual: unrecognised_suffixes lists .XSD (4 files); data-wellformed does not parse them; yet schema-declared
    judges them ("schemas.isotc211.org/19160/-4/aip/2.8.0/cov.XSD: no targetNamespace")
  • expected: one consistent treatment: either an upper-case suffix is the format (then it is parsed by data-wellformed
    and not "unrecognised") or it is not (then schema-declared does not judge it).
  • evidence: schemas.isotc211.org/19160/-4/aip/2.8.0/cov.XSD, schemas.isotc211.org/19156/-/onm/2.0.0.1/modelConsistency,xsd.XSD
    (+ their schemas.isotc211.orgWork copies). Validator: ecosystems/xml_schemas.py:xsd_files uses
    PurePosixPath(path).suffix.lower() == ".xsd"; facts/structure.py:214 known.get(PurePosixPath(path).suffix)
    does not lower.
  • repro: a single A.XSD.
  • confidence: medium

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

主要言語
Python
スター
4
フォーク
1
平均マージ
10時間 41分
マージ済み PR(30日)
79

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

cpp-best-practices/project_validator のほかの issue

cpp-best-practices/project_validator の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。