-
Notifications
You must be signed in to change notification settings - Fork 312
Add towncrier, update CONTRIBUTING, update workflow and skip CI when not needed #464
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from all commits
92f7dd7
c66f932
7091ec8
e1cf1d8
91557ed
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,14 +1,33 @@ | ||
| name: Test | ||
| name: Validation | ||
| on: | ||
| pull_request: | ||
| push: | ||
| branches: [master, develop] | ||
| workflow_dispatch: | ||
| types: [opened, reopened, synchronize, labeled] | ||
| concurrency: | ||
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | ||
| cancel-in-progress: true | ||
|
Comment on lines
+1
to
7
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
count=$(rg -c '^permissions:' .github/workflows/ci.yml || true)
test "$count" -eq 1
rg -n -A2 '^permissions:' .github/workflows/ci.ymlRepository: cpplint/cpplint Length of output: 203 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
printf '%s\n' '--- workflow ---'
cat -n .github/workflows/ci.yml
printf '%s\n' '--- permissions and action usage ---'
rg -n -C2 'permissions:|dorny/paths-filter|actions/checkout|pull_request_target|pull_request:' .github/workflows .github/actions 2>/dev/null || true
printf '%s\n' '--- repository workflow files ---'
git ls-files '.github/workflows/*' '.github/actions/*'Repository: cpplint/cpplint Length of output: 5803 🌐 Web query:
💡 Result: When using the dorny/paths-filter action (version 4) in workflows triggered by pull_request or pull_request_target events, the action requires the pull-requests: read permission to use the GitHub REST API for detecting changes against the base branch [1][2][3]. In most common workflow configurations, you should include both pull-requests: read (for the action) and contents: read (typically required by actions/checkout) in your job's permissions block [1][4][5]: permissions: contents: read pull-requests: read If these permissions are not explicitly defined at the job or workflow level, the action may fail with a "Resource not accessible by integration" error because the default token permissions might be insufficient [4][6]. Citations:
Add explicit read-only token permissions. This workflow runs permissions:
contents: read
pull-requests: readThis also prevents 🧰 Tools🪛 zizmor (1.29.0)[warning] 1-81: overly broad permissions (excessive-permissions): default permissions used due to no permissions: block (excessive-permissions) 🤖 Prompt for AI AgentsSource: Linters/SAST tools |
||
| jobs: | ||
| choose-jobs: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: dorny/paths-filter@v4 | ||
| id: filter | ||
| with: | ||
| filters: | | ||
| nondoc: | ||
| - '!**/*.rst' | ||
| hasLog: | ||
| - added: 'changes/*' | ||
| py: | ||
| - '*.py' | ||
| outputs: | ||
| shouldTest: ${{ steps.filter.outputs.nondoc == 'true' }} | ||
| needsLog: ${{ steps.filter.outputs.py == 'true' }} | ||
| changelogged: ${{ steps.filter.outputs.hasLog == 'true' }} | ||
|
|
||
| build-test: | ||
| name: Continuous Integration | ||
| needs: choose-jobs | ||
| if: needs.choose-jobs.outputs.shouldTest | ||
|
Comment on lines
+23
to
+30
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
grep -Fq "if: needs.choose-jobs.outputs.shouldTest == 'true'" .github/workflows/ci.yml
grep -Fq "needs.choose-jobs.outputs.needsLog == 'true'" .github/workflows/ci.ymlRepository: cpplint/cpplint Length of output: 153 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
printf '%s\n' '--- workflow excerpt ---'
cat -n .github/workflows/ci.yml | sed -n '1,100p'
printf '%s\n' '--- condition references ---'
rg -n -C 3 "shouldTest|needsLog|choose-jobs|build-test|pass:" .github/workflows/ci.ymlRepository: cpplint/cpplint Length of output: 5737 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
cat -n .github/workflows/ci.yml | sed -n '1,100p'Repository: cpplint/cpplint Length of output: 3650 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
python3 - <<'PY'
from pathlib import Path
import re
text = Path(".github/workflows/ci.yml").read_text()
required = {
"shouldTest output": r"shouldTest:\s*\$\{\{\s*steps\.filter\.outputs\.nondoc\s*==\s*'true'\s*\}\}",
"needsLog output": r"needsLog:\s*\$\{\{\s*steps\.filter\.outputs\.py\s*==\s*'true'\s*\}\}",
"build-test gate": r"if:\s*needs\.choose-jobs\.outputs\.shouldTest\b(?!\s*==)",
"changelog gate": r"needs\.choose-jobs\.outputs\.needsLog\s*&&",
}
for name, pattern in required.items():
print(f"{name}: {'present' if re.search(pattern, text) else 'absent'}")
# Job outputs are string-valued at the needs.*.outputs boundary.
for value in ("true", "false"):
print(f"needs output {value!r}: {'runs' if bool(value) else 'skips'} under non-empty-string truthiness")
PYRepository: cpplint/cpplint Length of output: 375 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
python3 - <<'PY'
from pathlib import Path
import re
text = Path(".github/workflows/ci.yml").read_text()
checks = {
"shouldTest output": r"shouldTest:\s*\$\{\{\s*steps\.filter\.outputs\.nondoc\s*==\s*'true'\s*\}\}",
"needsLog output": r"needsLog:\s*\$\{\{\s*steps\.filter\.outputs\.py\s*==\s*'true'\s*\}\}",
"build-test direct gate": r"if:\s*needs\.choose-jobs\.outputs\.shouldTest\s*$",
"changelog direct gate": r"needs\.choose-jobs\.outputs\.needsLog\s*&&",
}
for name, pattern in checks.items():
print(f"{name}: {'present' if re.search(pattern, text, re.MULTILINE) else 'absent'}")
for value in ("true", "false"):
print(f"{value!r} is non-empty: {bool(value)}")
PYRepository: cpplint/cpplint Length of output: 321 Compare both job outputs with Job outputs are strings, so Proposed condition update- if: needs.choose-jobs.outputs.shouldTest
+ if: needs.choose-jobs.outputs.shouldTest == 'true'
...
- needs.choose-jobs.outputs.needsLog &&
+ needs.choose-jobs.outputs.needsLog == 'true' &&🤖 Prompt for AI Agents |
||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
|
|
@@ -20,8 +39,6 @@ jobs: | |
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v7 | ||
| with: | ||
| fetch-depth: 0 | ||
| - name: Set up Python ${{ matrix.python-version }} | ||
| uses: actions/setup-python@v6 | ||
| with: | ||
|
|
@@ -34,3 +51,30 @@ jobs: | |
| pip install --editable ".[dev]" | ||
| - name: Test with tox | ||
| run: tox -e py | ||
|
|
||
| changelog: | ||
| name: Changelog requirement | ||
| needs: choose-jobs | ||
| if: | | ||
| needs.choose-jobs.outputs.needsLog && | ||
| !contains(github.event.pull_request.labels.*.name, 'skip-changelog') && | ||
| !contains(github.event.pull_request.labels.*.name, 'dependencies') && | ||
| github.event.pull_request.user.name != 'pre-commit-ci' | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
! rg -nF 'github.event.pull_request.user.name' .github/workflows/ci.yml
rg -nF 'github.event.pull_request.user.login' .github/workflows/ci.ymlRepository: cpplint/cpplint Length of output: 217 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
printf '%s\n' '--- workflow context ---'
sed -n '45,75p' .github/workflows/ci.yml
printf '%s\n' '--- pre-commit identity references ---'
rg -n -i 'pre-commit-ci|user\.(name|login)' .github README.md pyproject.toml setup.cfg 2>/dev/null || trueRepository: cpplint/cpplint Length of output: 1444 🌐 Web query:
💡 Result: The exact value for the pull request author (user login) associated with the pre-commit.ci bot is 'pre-commit-ci[bot]' [1][2][3]. When creating automated workflows in GitHub Actions to filter or identify pull requests created by pre-commit.ci, you can use this identifier within your conditional logic [1][2][3]. For example, to check the author of a pull request in a GitHub Actions workflow step, you would use: ${{ github.event.pull_request.user.login == 'pre-commit-ci[bot]' }} [1][2] This identifier is consistent with GitHub's naming convention for official integration bots [4]. Note that pre-commit.ci operates as an app, and its automated pull requests (such as autoupdates) will appear with this username [5][4]. Citations:
Use
🤖 Prompt for AI Agents |
||
| # impossible to make pre-commit-ci add label "at least not for free tier" | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - run: | | ||
| exit $([[ ${{ needs.choose-jobs.outputs.changelogged }} == 'true' ]]) | ||
|
|
||
| pass: | ||
| name: Summary | ||
| needs: [ build-test, changelog ] | ||
| if: always() | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Fail if changelog ran and failed | ||
| if: ${{ needs.changelog.result == 'failure' }} | ||
| run: echo "Please follow instructions under https://github.com/cpplint/cpplint/blob/crytown/CONTRIBUTING.rst#pull-requests to add a changelog entry\nor request the `skip-changelog` label if you believe the changes should not be in the changelog." >> $GITHUB_STEP_SUMMARY; exit 1 | ||
| - name: Fail if build-test ran and failed | ||
| if: ${{ needs.build-test.result == 'failure' }} | ||
| run: echo "Failed required test(s).\nSee https://github.com/cpplint/cpplint/blob/develop/CONTRIBUTING.rst#testing for help on testing." >> $GITHUB_STEP_SUMMARY; exit 1 | ||
|
Comment on lines
+69
to
+80
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
grep -Fq 'needs: [ choose-jobs, build-test, changelog ]' .github/workflows/ci.yml
grep -Fq 'needs.choose-jobs.result' .github/workflows/ci.ymlRepository: cpplint/cpplint Length of output: 153 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
printf '%s\n' '--- workflow structure ---'
nl -ba .github/workflows/ci.yml | sed -n '1,120p'
printf '%s\n' '--- job identifiers and dependencies ---'
rg -n '^[[:space:]]{2}[A-Za-z0-9_-]+:|^[[:space:]]{4}(needs|if|runs-on):|needs\.[A-Za-z0-9_-]+\.result' .github/workflows/ci.ymlRepository: cpplint/cpplint Length of output: 220 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
python3 - <<'PY'
from pathlib import Path
import re
text = Path(".github/workflows/ci.yml").read_text()
jobs = re.search(r"(?ms)^jobs:\n(.*?)(?=^ [A-Za-z]|\Z)", text)
print("jobs section found:", bool(jobs))
for name in ("choose-jobs", "build-test", "changelog", "pass"):
m = re.search(rf"(?ms)^ {re.escape(name)}:\n(.*?)(?=^ [A-Za-z0-9_-]+:|\Z)", text)
print(f"\n[{name}]")
print(m.group(0) if m else "missing")
PYRepository: cpplint/cpplint Length of output: 2948 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
python3 - <<'PY'
from pathlib import Path
import re
text = Path(".github/workflows/ci.yml").read_text()
for name in ("choose-jobs", "build-test", "changelog", "pass"):
start = re.search(rf"(?m)^ {re.escape(name)}:", text)
if not start:
print(f"{name}: missing")
continue
end = re.search(r"(?m)^ [A-Za-z0-9_-]+:", text[start.end():])
block = text[start.start(): start.end() + (end.start() if end else len(text))]
print(f"\n--- {name} ---")
print(block)
PYRepository: cpplint/cpplint Length of output: 2947 Make the summary fail when job selection fails.
🧰 Tools🪛 zizmor (1.29.0)[warning] 69-81: overly broad permissions (excessive-permissions): default permissions used due to no permissions: block (excessive-permissions) 🤖 Prompt for AI Agents
Comment on lines
+75
to
+80
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
if rg -n 'echo .*`skip-changelog`' .github/workflows/ci.yml; then
exit 1
fi
rg -n 'printf|GITHUB_STEP_SUMMARY' .github/workflows/ci.ymlRepository: cpplint/cpplint Length of output: 443 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
printf '%s\n' '--- workflow context ---'
cat -n .github/workflows/ci.yml | sed -n '68,83p'
printf '%s\n' '--- documentation references ---'
rg -n 'CONTRIBUTING\.rst#(pull-requests|testing)|crytown|develop' .github README.md CONTRIBUTING.rst 2>/dev/null || true
printf '%s\n' '--- isolated Bash behavior ---'
tmp="$(mktemp)"
trap 'rm -f "$tmp"' EXIT
bash -c 'echo "Please follow instructions\nor request the `skip-changelog` label." >> "$1"' bash "$tmp" 2>"$tmp.stderr" || true
printf '%s\n' 'output bytes:'
od -An -t x1c "$tmp"
printf '%s\n' 'stderr:'
cat "$tmp.stderr"
printf '%s\n' 'printf output bytes:'
bash -c 'printf "%s\n" "Please follow instructions" "Or request the \`skip-changelog\` label."' bash | od -An -t x1cRepository: cpplint/cpplint Length of output: 2071 🏁 Script executed: #!/usr/bin/env bash
set -u
out="$(mktemp)"
err="$(mktemp)"
trap 'rm -f "$out" "$err"' EXIT
bash -c 'echo "Please follow instructions\nor request the `skip-changelog` label."' bash \
>"$out" 2>"$err" || printf 'shell status: %s\n' "$?"
python3 - "$out" "$err" <<'PY'
import pathlib
import sys
for label, path in (("stdout", sys.argv[1]), ("stderr", sys.argv[2])):
data = pathlib.Path(path).read_bytes()
print(f"{label} bytes: {data!r}")
PY
printf '%s\n' '--- URL status ---'
for url in \
'https://github.com/cpplint/cpplint/blob/crytown/CONTRIBUTING.rst#pull-requests' \
'https://github.com/cpplint/cpplint/blob/develop/CONTRIBUTING.rst#pull-requests' \
'https://github.com/cpplint/cpplint/blob/develop/CONTRIBUTING.rst#testing'
do
curl -L -sS -o /dev/null -w '%{http_code} %{url_effective}\n' "$url" || true
doneRepository: cpplint/cpplint Length of output: 553 Write literal Markdown with The backticks execute 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -20,7 +20,7 @@ TBA | |
| Yet another overdue... hotfix. Sorry this took so long. | ||
|
|
||
| * The false positive for indented function parameters in namespaces was eradicated. (https://github.com/cpplint/cpplint/pull/304) | ||
| * Files that end in ".c", ".C", or ".cu" will now also automatically suppress C++-only categories. Previously, `// NO_LINT_C` was required. (https://github.com/cpplint/cpplint/pull/318) | ||
| * Files that end in ".c", ".C", or ".cu" will now also automatically suppress C++-only categories. Previously, ``// NO_LINT_C`` was required. (https://github.com/cpplint/cpplint/pull/318) | ||
| * build/include-what-you-use now recognizes c-style headers such as <stdio.h> for symbols from <cstdio>. (https://github.com/cpplint/cpplint/pull/319) | ||
| * Ruff, mypy, and codespell were ran on the project to improve performance and reader comprehension thanks to @cclauss. | ||
| * Tests were refactored away from unittest to improve display with pytest by @cclauss. (https://github.com/cpplint/cpplint/pull/332) | ||
|
|
@@ -35,8 +35,8 @@ A large long-overdue modernization of the codebase! | |
| * Python versions less than 3.8 are no longer supported. Python 3.12 support was added along with fixed CI for 3.7 and 3.8, courtesy of @jayvdb | ||
| * As a result of all this, setup.py's lint subcommand was removed. Please run the commands directly instead. | ||
| * You can now specify blocks of code that exclude linting with NOLINTBEGIN and NOLINTEND, courtesy of @n3world (https://github.com/cpplint/cpplint/pull/213) | ||
| * The config filename can now be specified through `--config` thanks to @gedankenexperimenter (https://github.com/cpplint/cpplint/pull/198). Specifying a config file not under the current directory will be available in a future release. | ||
| * The `--filter` option can now be only applied to a specific file or even a specific line through utilizing colons, e.g. `-filter=-whitespace:foo.h,+whitespace/braces:foo.h:418`. Courtesy of @PhilLab (https://github.com/cpplint/cpplint/pull/171) | ||
| * The config filename can now be specified through ``--config`` thanks to @gedankenexperimenter (https://github.com/cpplint/cpplint/pull/198). Specifying a config file not under the current directory will be available in a future release. | ||
| * The ``--filter`` option can now be only applied to a specific file or even a specific line through utilizing colons, e.g. ``-filter=-whitespace:foo.h,+whitespace/braces:foo.h:418``. Courtesy of @PhilLab (https://github.com/cpplint/cpplint/pull/171) | ||
| * NOLINT and NOLINTNEXTLINE comments now support a comma-separated list of categories, courtesy of @n3world (https://github.com/cpplint/cpplint/pull/220) | ||
| * NOLINT and NOLINTNEXTLINE will now ignore categories known to be from clang-tidy thanks to @xatier (https://github.com/cpplint/cpplint/pull/231) | ||
| * Fixed behavior with nested source repositories by @groegeorg (https://github.com/cpplint/cpplint/pull/78) | ||
|
|
@@ -45,8 +45,8 @@ A large long-overdue modernization of the codebase! | |
| * build/include-what-you-use will no longer err on similarly-named classes from other namespaces thanks to @geoffviola (https://github.com/cpplint/cpplint/pull/273) | ||
| * Indented functions inside namespaces will now be correctly erred on, courtesy of @Yujinmon (https://github.com/cpplint/cpplint/pull/235) | ||
| * The check for C-style casts now looks for the standard fixed-width integer typenames instead of non-standard ones (e.g. int32_t instead of int32) thanks to @nate-thirdwave (https://github.com/cpplint/cpplint/pull/282) | ||
| * `[[(un)likely]]` no longer clouds readability/braces's super spy−scanning of braces, courtesy of @aaronliu0130 (https://github.com/cpplint/cpplint/pull/265) | ||
| * `readability/braces` will realize that C++20 concepts require a semicolon, courtesy of @armandas (https://github.com/cpplint/cpplint/pull/288) | ||
| * ``[[(un)likely]]`` no longer clouds readability/braces's super spy−scanning of braces, courtesy of @aaronliu0130 (https://github.com/cpplint/cpplint/pull/265) | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Finish the RST inline-literal conversion. Line 48 leaves Proposed markup update-* ``[[(un)likely]]`` no longer clouds readability/braces's super spy−scanning of braces, courtesy of `@aaronliu0130` (https://github.com/cpplint/cpplint/pull/265)
+* ``[[(un)likely]]`` no longer clouds ``readability/braces``'s super spy−scanning of braces, courtesy of `@aaronliu0130` (https://github.com/cpplint/cpplint/pull/265)
...
-* The new __VA_OPT__(,) will now be recognized by the Whitespace linter as a function thanks to `@elrinor` (https://github.com/cpplint/cpplint/pull/237)
+* The new ``__VA_OPT__(,)`` will now be recognized by the Whitespace linter as a function thanks to `@elrinor` (https://github.com/cpplint/cpplint/pull/237)Also applies to: 60-60 🤖 Prompt for AI Agents |
||
| * ``readability/braces`` will realize that C++20 concepts require a semicolon, courtesy of @armandas (https://github.com/cpplint/cpplint/pull/288) | ||
| * C++20 headers will no longer be flagged as C headers thanks to @miker2 (https://github.com/cpplint/cpplint/pull/216) | ||
| * Same goes for C++23 and C23 headers, thanks to @aaronliu0130 (https://github.com/cpplint/cpplint/pull/239) | ||
| * "complex.h" will be treated as the C99 header instead of the legacy C++ header by @tkruse (https://github.com/cpplint/cpplint/pull/219) | ||
|
|
@@ -56,10 +56,10 @@ A large long-overdue modernization of the codebase! | |
| * We will no longer bother you if you mark a no-arg constructor as explicit thanks to @markww (https://github.com/cpplint/cpplint/pull/227) | ||
| * In the same PR, @aaronliu0130 also decreased the verbosity of nagging to mark single-arg constructors as explicit to 4, as the styleguide includes a major exception to this rule that would be very hard to detect. | ||
| * Processing C++ files through stdin/piping is now fixed thanks to @aaronliu0130 (https://github.com/cpplint/cpplint/pull/289) | ||
| * You can now specify the name of the CPPLINT.cfg file through `--config` as long as it is in the same directory, thanks to @gedankenexperimenter (https://github.com/cpplint/cpplint/pull/198) | ||
| * You can now specify the name of the CPPLINT.cfg file through ``--config`` as long as it is in the same directory, thanks to @gedankenexperimenter (https://github.com/cpplint/cpplint/pull/198) | ||
| * The new __VA_OPT__(,) will now be recognized by the Whitespace linter as a function thanks to @elrinor (https://github.com/cpplint/cpplint/pull/237) | ||
| * The check for including a source file's header file will now scan all files with the same base name. Thanks to @crogre for figuring out what code needed to be changed and @aaronliu0130 for fixing it (https://github.com/cpplint/cpplint/pull/104) | ||
| * `build/class` and `build/namespaces` no longer check for whether a namespace or class has a closing brace from @geoffviola (https://github.com/cpplint/cpplint/pull/272). This should be done in a more efficient manner by a compiler or language server instead. As part of this, the `build/class` category was removed. | ||
| * ``build/class`` and ``build/namespaces`` no longer check for whether a namespace or class has a closing brace from @geoffviola (https://github.com/cpplint/cpplint/pull/272). This should be done in a more efficient manner by a compiler or language server instead. As part of this, the ``build/class`` category was removed. | ||
| * Fixed false positive when an if/else statement has braces everywhere but one of the closing braces before the final block is on a separate line by @aaronliu0130 (https://github.com/cpplint/cpplint/pull/265) | ||
| * For header files, the check for a header guard's name will now be cached and only run once, as opposed to previously being run on every line. This results in a ~5.6% reduction in run time thanks to @matyalatte, who figured it out, and @aaronliu0130 for implementing it (https://github.com/cpplint/cpplint/pull/291) | ||
| * Usages of the deprecated sre_compile were refactored by @jspricke (https://github.com/cpplint/cpplint/pull/214) | ||
|
|
@@ -113,7 +113,7 @@ A large long-overdue modernization of the codebase! | |
| 1.5.1 (2020-06-05) | ||
| ================== | ||
|
|
||
| * Revert #43 behavior change for include order from 1.5.0, and hide it behind command-line-flag `--includeorder=standardcfirst`. | ||
| * Revert #43 behavior change for include order from 1.5.0, and hide it behind command-line-flag ``--includeorder=standardcfirst``. | ||
| It turns out there is no easy objective way to tell c system headers from certain c++ library headers, and Google cpplint intentionally classifies some C++ header includes as C system header for simplicity. | ||
| * Libraries considered as C system headers using --includeorder=standardcfirst now also includes linux-specific headers (glibc-devel, glibc-kernheaders, linux-libc-dev). | ||
|
|
||
|
|
@@ -133,8 +133,8 @@ A large long-overdue modernization of the codebase! | |
| 1.4.5 (2020-01-13) | ||
| ================== | ||
|
|
||
| * Avoid false positive for [build/include_what_you_use] in case of `foo.set<type>` and `foo->set<type>` usage. | ||
| * Avoid false positive for [build/include_what_you_use] in case of `map` is user defined function | ||
| * Avoid false positive for [build/include_what_you_use] in case of ``foo.set<type>`` and ``foo->set<type>`` usage. | ||
| * Avoid false positive for [build/include_what_you_use] in case of ``map`` is user defined function | ||
| * Escape backslashes in pydoc strings to get rid of DeprecationWarning. | ||
| * Fix false positive "should include its header" for 3rd party headers | ||
| * Add support for c++17 tuple destructuring | ||
|
|
@@ -149,12 +149,12 @@ Another cleanup release | |
|
|
||
| * NOBUG: fix unit/cli tests for source release | ||
| * NOBUG: reduce diff to upstream by intentionally using deprecated functions where upstream uses them | ||
| * add `--version` command (https://github.com/cpplint/cpplint/issues/27) | ||
| * add ``--version`` command (https://github.com/cpplint/cpplint/issues/27) | ||
|
|
||
| 1.4.3 (2019-02-18) | ||
| ================== | ||
|
|
||
| * Revert "Fix the `build/endif_comment` check", same as reverted in upstream | ||
| * Revert "Fix the ``build/endif_comment`` check", same as reverted in upstream | ||
|
|
||
| 1.4.2 (2019-02-17) | ||
| ================== | ||
|
|
@@ -170,12 +170,12 @@ Another cleanup release | |
| ================== | ||
|
|
||
| * Incorporate cpplint updates from google (e5d807c6a0d, 2018-05-03) | ||
| * Fix the `build/endif_comment` check (https://github.com/google/styleguide/pull/169) | ||
| * Fix the ``build/endif_comment`` check (https://github.com/google/styleguide/pull/169) | ||
| * Teach the explicit constructor check about constexpr (#56) | ||
| * Changed vs7 output format (#57) | ||
| * Remove presubmit check for DISALLOW_* macros (#54) | ||
| * add `--quiet` flag as in upstream (https://github.com/google/styleguide/pull/293) | ||
| * support `--root` argument to run in different folder (https://github.com/google/styleguide/pull/291) | ||
| * add ``--quiet`` flag as in upstream (https://github.com/google/styleguide/pull/293) | ||
| * support ``--root`` argument to run in different folder (https://github.com/google/styleguide/pull/291) | ||
| * Fix 16bit Unicode issue (https://github.com/google/styleguide/issues/337) | ||
|
|
||
| 1.3.0 (2016-07-12) | ||
|
|
@@ -198,8 +198,8 @@ Another cleanup release | |
| 1.2.0 (2016-03-19) | ||
| ================== | ||
|
|
||
| * Adds `.cu` and `.cuh` as supported file extensions by default. | ||
| * Moves the warning "Include the directory when naming .h files" from the `build/include` category to the `build/include_subdir` category. | ||
| * Adds ``.cu`` and ``.cuh`` as supported file extensions by default. | ||
| * Moves the warning "Include the directory when naming .h files" from the ``build/include`` category to the ``build/include_subdir`` category. | ||
|
|
||
| 1.1.0 (2016-02-24) | ||
| ================== | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: cpplint/cpplint
Length of output: 153
🏁 Script executed:
Repository: cpplint/cpplint
Length of output: 7737
🌐 Web query:
GitHub Actions pull_request unlabeled activity type workflow trigger documentation💡 Result:
To trigger a GitHub Actions workflow when a label is added to or removed from a pull request, you must use the
pull_requestevent with thelabeledorunlabeledactivity types [1][2]. By default, apull_requestworkflow only triggers on theopened,synchronize, andreopenedactivity types [1][3]. To includelabeledorunlabeledactivity, you must explicitly define these using thetypeskeyword in your workflow configuration [1][2]. Example configuration: on: pull_request: types: - opened - synchronize - reopened - labeled - unlabeled When you use thetypeskeyword, you must explicitly list all the activity types you want to trigger the workflow, including the default ones if you still want the workflow to run for those events [1][2]. Important Considerations: - If you specify multiple activity types, the workflow will trigger whenever any one of them occurs [4][5]. - You can access information about the event, such as which label was added or removed, using the GitHub Actions context, specificallygithub.event[6]. - Note that other activity types, such aslabeledandunlabeled, do not automatically create workflow runs in an approval-required state (unlikeopened,synchronize, andreopenedwhich might trigger security checks if automated) [3][4]. For further details, consult the official GitHub documentation on events that trigger workflows [1][2] and workflow syntax [5].Citations:
Handle label removal events.
Add
unlabeledto thepull_requestactivity types. Without it, removingskip-changelogdoes not recompute the exemption, so a previous successful check can remain in effect.Proposed trigger update
📝 Committable suggestion
🤖 Prompt for AI Agents