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
-
documentation type/bug
難度 2/5 1-3 小時 新手友好度 78/100
維護者通常 1 天內回覆
-
難度 1/5 1 小時以內 新手友好度 65/100
StevenBlack/hosts#3299 ·
-
`garak --report` overwrites the input report when its name has no ".report"可能已有人在做 @0z5a 今天認領。 未關閉needs-triage
難度 2/5 半天 新手友好度 72/100
維護者通常 2 天內回覆
-
trace: Pi's 1-hour cache writes are priced at 1.25x, but billed at 2x可能已有人在做 @Shizoqua 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 82/100
microsoft/TokenEconomizer#221 ·
維護者通常 1 天內回覆
-
plot_graph crashes when a mesh node has no m2m edge可能已有人在做 @tygvi 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 78/100
mllam/neural-lam#883 · 1 則留言 ·
維護者通常 2 天內回覆