R: tests/*.R scripts run by R CMD check are not tests (data.table), sanitizer images (rocker/r-devel-san) are the R way to run ASan/UBSan, styler on issue_comment is not a gate
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 40/100
调研方向
The three R rules live in ecosystems/r.py: the _styler check around lines 124-137 (it must consider the workflow trigger, not just the commit), the R_TEST_FILES.path regex (it must also accept tests/*.R scripts), and the sanitizer detection (it must recognise *-san and rocker/r-devel-san images). Start by reading those rules and the corpus entries for testthat, ggplot2 and data.table in corpus/. Done when those expectations match the corpus results without regressing the testthat and tinytest layouts.
由索引模型根据 Issue 内容生成。
描述
data.table has one of the largest R test suites (inst/tests/*.Rraw driven by tests/*.R, which R CMD check runs by definition) → FAIL "no tests found (testthat or tinytest files)". Its two GitLab jobs run the check under R built with -fsanitize=address,undefined (rocker/r-devel-san) → "no sanitizers found". testthat and ggplot2 PASS "CI enforces the styler style" though styler runs only in a /style issue-comment job that no push or PR triggers.
Evidence from the corpus audit
r-lib/testthat, tidyverse/ggplot2 (and tidyverse/dplyr) / code-formatting
- kind: FALSE_POSITIVE
- actual: PASS (R): "CI enforces the styler style"
- expected: FAIL/WARN for testthat and ggplot2: styler runs only in the
stylejob ofpr-commands.yaml, which is triggered by a maintainer typing/stylein a PR comment (issue_comment), so no push or pull request is ever checked; for dplyr the PASS is right but should creditair(format-suggest.yamlrunsair format .on everypull_request_targetand fails throughreviewdog/action-suggesterwithfail_level: error), not styler. - evidence: testthat
.github/workflows/pr-commands.yaml:52:if: ${{ github.event.issue.pull_request && (github.event.comment.author_association == 'MEMBER' || ...) && startsWith(github.event.comment.body, '/style') }},:73:run: styler::style_pkg(), followed bygit commit -m 'Style'; the workflow's only trigger ison: issue_comment: types: [created]. ggplot2pr-commands.yaml:69,73identical; ggplot2 hasair.tomlbut no job runs air. Validator:ecosystems/r.py:124-137(_styler: "it enforces the style where the job fails on git diff --exit-code or commits the changes") counts the commit without looking at the job's trigger. - repro: the r-lib
pr-commands.yamlexample (onissue_comment,/styleguard,styler::style_pkg()+git commit) as the only workflow touching styler; expect no formatting enforcement. - confidence: medium (the documented rule is applied as written; the rule itself is what is wrong)
Rdatatable/data.table / tests-run
- kind: FALSE_NEGATIVE
- actual: FAIL: R: no tests found (testthat (tests/testthat/test-.R) or tinytest (inst/tinytest/test_.R) files)
- expected: PASS: data.table has one of the largest R test suites (22,016-line
inst/tests/tests.Rrawplus 11 more.Rrawfiles) run bytests/*.Rscripts, whichR CMD checkexecutes by definition (everytests/*.Rfile is a test); CI runsR CMD checkinR-CMD-check-occasional.yamland.gitlab-ci.ymlandcheck-r-packageinR-CMD-check.yaml. - evidence:
tests/main.R:2-4:require(data.table)/test.data.table() # runs the main test suite of 5,000+ tests in /inst/tests/tests.Rraw;tests/also holdsS4.R froll.R nafill.R optimize.R programming.R types.R ...;inst/tests/tests.Rraw(22016 lines). Validatorecosystems/r.pyR_TEST_FILES.path:(?:^|/)(?:tests/testthat/test[-_][^/]+|inst/tinytest/test_[^/]+)\.[Rr]$recognises only testthat and tinytest layouts. - repro:
DESCRIPTION,tests/main.Rcontainingstopifnot(foo::f() == 1), workflow withr-lib/actions/check-r-package@v2; expect tests found (R CMD check runstests/*.R). - confidence: high
Rdatatable/data.table / sanitizers
- kind: UNSUPPORTED
- actual: FAIL: no sanitizers found; enable AddressSanitizer, UndefinedBehaviorSanitizer
- expected: PASS (or at least a mention): two GitLab CI jobs run the whole check under R builds compiled with
-fsanitize=address,undefined(clang and gcc), using the R community's standard approach of a prebuilt sanitizer image (rocker/r-devel-san,rhub/*-san, here the project's ownr-devel-clang-san/r-devel-gcc-san), and fail the job on sanitizer output. - evidence:
.gitlab-ci.yml:220-222:test-lin-dev-clang-san:...image: registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang-san;:227:LSAN_OPTIONS: "suppressions=$CI_PROJECT_DIR/.dev/lsan.supp";:235:# fail if R CMD check had failed or if sanitizer output found;:238-240the gcc twin;.ci/README.md:16-17documents both asclang -fsanitize=address,undefined. The flags live in the image, so only the image name (*-san,rocker/r-devel-san,rocker/r-devel-ubsan-clang) is visible. - repro:
.gitlab-ci.ymljob withimage: rocker/r-devel-sanrunningR CMD check; expect sanitizers recognised (ASan+UBSan) for the R package's native code. - 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 天内回复