dependency-management: an empty .gitmodules is "submodules", Composer's default type is not library, R DESCRIPTION and Julia Project.toml say "no dependencies are declared", license-notice third_party/, a project's own submodule is "third-party"
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
Start in project_validator/checks/dependency_management.py, where SUBMODULES = ".gitmodules" tests only for the file's presence, and in project_validator/ecosystems/php/init.py around line 125, where the Composer 'library' default is missing. Each report has a repro: an empty .gitmodules, a composer.json with no type, or a Project.toml with [deps] should no longer produce the false warning or message. Done means those repros pass and the other ecosystems' outputs are unchanged.
由索引模型根据 Issue 内容生成。
描述
kubespray: WARN "third-party code is committed (git submodules)" for a 0-byte .gitmodules (its pre-commit even forbids submodules). guzzle and laravel: told to commit composer.lock because type is missing, but Composer's documented default is library. dplyr/testthat/data.table and Documenter.jl: PASS "no dependencies are declared" although DESCRIPTION Imports: and [deps] declare twenty (ggplot2 and DataFrames get "not applicable" instead: inconsistent). golangci-lint's third_party/ holds only license notices. cetz's one submodule is the organisation's shared scripts. terraform-aws-modules: 29 "declaring" files are examples/ and shared modules deliberately commit no lockfile.
Evidence from the corpus audit
kubernetes-sigs/kubespray / dependency-management
- kind: FALSE_POSITIVE
- actual: WARN "third-party code is committed (git submodules (.gitmodules))" with the hint "fetch third-party code
with the ecosystem's package manager instead of committing a copy of it" - expected: no such claim:
.gitmodulesexists but is empty (0 bytes); the project has no submodules (its pre-commit
config even runsforbid-new-submodules). - evidence:
wc -c .gitmodules→0 .gitmodules;.pre-commit-config.yaml:13:- id: forbid-new-submodules.
Validator:project_validator/checks/dependency_management.py:14:SUBMODULES = ".gitmodules"(presence, not
content, is tested). - repro: an empty
.gitmodulesin any project. - confidence: high
golangci/golangci-lint / dependency-management
- kind: FALSE_POSITIVE
- actual: WARN:
third-party code is committed (third_party/); dependencies are declared in docs/go.mod, go.mod, ... and locked in ... - expected: PASS:
third_party/holds nothing but license notices for linters that were forked intopkg/; no third-party code is committed. - evidence:
ls third_party/*->third_party/dogsled: LICENSE,third_party/gochecknoglobals: LICENSE,third_party/gochecknoinits: LICENSE,third_party/gometalinter: LICENSE,third_party/lll: LICENSE,third_party/nakedret: LICENSE,third_party/x_tools: LICENSE(one file each) - repro:
third_party/foo/LICENSEonly, plusgo.mod/go.sum. Expect no "third-party code" warning (a directory with no source files is not code). - confidence: medium
JuliaDocs/Documenter.jl / dependency-management
- kind: MESSAGE
- actual: PASS:
no dependencies are declared - expected: wording that says Julia is not judged (DataFrames and JuMP get
SKIP: not applicable to Julia); Documenter'sProject.tomldeclares ~20[deps], so "no dependencies are declared" is false. The PASS comes from the JavaScript place alone (no package.json). - evidence:
Project.toml:5-9:[deps]/ANSIColoredPrinters = "a4c015fc-..."/AbstractTrees = "1520ce14-..."/Base64 = .../CodecZlib = ...;JuliaDocs__Documenter.jl.jsonplaces:JavaScript/TypeScript | . | PASS | no dependencies are declared - repro:
Project.tomlwith[deps]and oneassets/x.js - confidence: medium
guzzle/guzzle, laravel/framework / dependency-management
- kind: FALSE_POSITIVE
- actual: WARN: dependencies are declared in composer.json, vendor-bin/composer-normalize/composer.json,
vendor-bin/php-cs-fixer/composer.json and 1 more (Composer) but not locked (guzzle);PHP: the root: dependencies are declared in composer.json, src/Illuminate/Auth/composer.json, ... and 33 more (Composer) but not locked(laravel) - expected: PASS: Composer's documented default for a missing
typeislibrary; both are libraries (neither commits
a lock file by design, laravel even ignores it). Secondary: guzzle'svendor-bin/*/composer.jsonare
bamarni/composer-bin-plugin tool manifests (one dependency each), not the project's dependency declarations. - evidence: guzzle
composer.json:1-4:{/"name": "guzzlehttp/guzzle",/"description": "Guzzle is a PHP HTTP client library",/"license": "MIT",— no top-level"type"(the only"type"keys, lines 83 and 103, are inside
repositories); laravelcomposer.json: no"type"key; laravel.gitignore:13:composer.lock; validator
project_validator/ecosystems/php/__init__.py:125:library=lambda _path, text: _composer(text).get("type") == "library",. - repro:
composer.jsonwithrequireand notype, nocomposer.lock→ WARN "not locked" (reproduced in
repro-php; adding"type": "library"→ PASS). - confidence: high
tidyverse/dplyr, r-lib/testthat, Rdatatable/data.table / dependency-management
- kind: MESSAGE
- actual: PASS: no dependencies are declared; "if the project has dependencies, consider a dependency manager: CPM, FetchContent, Meson wraps, vcpkg or Conan"
- expected: either SKIP for the R package (as ggplot2 and targets get: "not applicable to R") or a sentence about DESCRIPTION; "no dependencies are declared" is false (dplyr's
DESCRIPTIONdeclaresImports: cli (>= 3.6.2), generics, glue (>= 1.3.2), lifecycle (>= 1.0.5), magrittr (>= 1.5), ...) and the CPM/vcpkg hint is noise for an R package. The sentence comes from the C/C++ profile judging thesrc/code (previous DETECTION finding) and is printed without a language prefix. - evidence: dplyr
DESCRIPTION:24-26:Imports:/cli (>= 3.6.2),/generics,...; dplyr.allow.txt:[PASS] dependency-management: no dependencies are declared. - repro: as the DETECTION repro above; expect
dependency-managementto SKIP or prefix "C/C++:". - confidence: low (cosmetic; root cause is the DETECTION finding)
cetz-package/cetz / dependency-management
- kind: MESSAGE
- actual: WARN:
dependency-management: third-party code is committed (git submodules (.gitmodules)); .../fetch third-party code with the ecosystem's package manager instead of committing a copy of it - expected: WARN wording should not call it third-party: the one submodule is the project's own organisation's shared scripts repository (and is not even checked out here), not vendored dependency code.
- evidence:
.gitmodules:1-3:[submodule "common"]/path = common/url = https://github.com/cetz-package/common.git. - repro:
.gitmoduleswhoseurlis under the same owner as the repository; expect "a submodule of the project's own" or no warning. - confidence: low
terraform-aws-modules/terraform-aws-vpc, -eks, -lambda / dependency-management
- kind: MESSAGE
- actual: WARN:
dependencies are declared in examples/block-public-access/main.tf, examples/block-public-access/versions.tf, examples/complete/main.tf and 29 more (Terraform providers) but not locked/commit .terraform.lock.hcl - expected: a note that the lockfile is for root configurations: these are shared modules that deliberately do not commit a lockfile (the repo ignores it and tells terraform-docs not to show one), and the 29+ "declaring" files are mostly
examples/. The WARN itself is defensible policy; the message and the file list are misleading for a module repository. - evidence:
.gitignore:4-5:# Terraform lockfile/.terraform.lock.hcl;.pre-commit-config.yaml:7-9:- id: terraform_docs/args:/- '--args=--lockfile=false'. - repro: module repo with
versions.tfand.gitignoreignoring.terraform.lock.hcl; expect the message to distinguish root configurations from modules. - confidence: low
xmlunit/xmlunit / dependency-management
- kind: FALSE_POSITIVE
- actual: WARN: third-party code is committed (git submodules (.gitmodules)); ...
fetch third-party code with the ecosystem's package manager instead of committing a copy of it - expected: no "third-party code" remark: the only submodule is the project's own test-data repository.
- evidence:
.gitmodules:1-3:[submodule "test-resources"]/path = test-resources/
url = https://github.com/xmlunit/test-resources.git(same GitHub organisation as the project). - repro:
.gitmoduleswhoseurlis under the same owner as the repository. - 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
- 主要语言
- Python
- 星标
- 4
- 派生
- 1
- 平均合并
- 10 小时 41 分钟
- 30 天内合并 PR
- 79
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
cpp-best-practices/project_validator 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 62/100
cpp-best-practices/project_validator#267 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
cpp-best-practices/project_validator#263 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
cpp-best-practices/project_validator#260 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
cpp-best-practices/project_validator#259 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
cpp-best-practices/project_validator#255 ·
维护者通常 1 天内回复
查看 cpp-best-practices/project_validator 的全部 Issue
相似的 Issue
-
plot_graph crashes when a mesh node has no m2m edge可能已有人在做 @tygvi 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
mllam/neural-lam#883 · 1 条评论 ·
维护者通常 2 天内回复
-
enhancement possible-duplicate
难度 1/5 1-3 小时 新手友好度 78/100
AOSSIE-Org/PictoPy#1715 · 2 条评论 ·
维护者通常 6 天内回复
-
SQLite connector omits generated columns from the catalog, and drops relationships sourced on them未关闭
难度 2/5 1-3 小时 新手友好度 72/100
NVIDIA/auto-ontology#511 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
ethereum/execution-specs#3996 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
Project-N-E-K-O/N.E.K.O#3725 ·
维护者通常 1 天内回复