Skip to content

Ci/gha parallel test suite #7

Ci/gha parallel test suite

Ci/gha parallel test suite #7

Workflow file for this run

name: Lint
on:
push:
branches: [main, master]
pull_request:
permissions:
contents: read
jobs:
lint:
name: R lint (lintr)
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: read
security-events: write
steps:
- uses: actions/checkout@v4
- uses: r-lib/actions/setup-r@v2
with:
r-version: release
use-public-rspm: true
- uses: r-lib/actions/setup-r-dependencies@v2
with:
dependencies: 'c("Depends", "Imports", "LinkingTo")'
extra-packages: |
cran::lintr
cran::jsonlite
github::datashield/dsDangerClient
- name: Lint
run: |
Rscript -e '
al <- lintr::available_linters()
keep <- vapply(al$tags, function(t) any(t %in% c("correctness", "common_mistakes", "robustness")), logical(1))
sel <- al$linter[keep]
linter_funs <- lapply(sel, function(n) get(n, envir = asNamespace("lintr"))())
names(linter_funs) <- sel
lints <- lintr::lint_package(linters = linter_funs)
cat("n lints:", length(lints), "\n")
lintr::sarif_output(lints, "lintr_results.sarif")
if (length(lints) > 0) {
linter_names <- vapply(lints, function(l) l$linter, character(1))
counts <- sort(table(linter_names), decreasing = TRUE)
count_rows <- paste0("| ", names(counts), " | ", as.integer(counts), " |")
finding_lines <- vapply(lints, function(l) {
sprintf("- `%s:%d` %s - %s", basename(l$filename), l$line_number, l$linter, l$message)
}, character(1))
summary <- c(
"## Lint results",
"",
sprintf("**%d findings** (correctness/robustness/common_mistakes linters)", length(lints)),
"",
"| Linter | Count |",
"|---|---|",
count_rows,
"",
"<details><summary>All findings</summary>",
"",
finding_lines,
"",
"</details>"
)
} else {
summary <- c("## Lint results", "", "No findings.")
}
writeLines(summary, Sys.getenv("GITHUB_STEP_SUMMARY"))
'
- name: Upload lint results
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: lintr_results.sarif