README
suggestion-bot
suggestion-bot
submits code reviews with suggestions based on your diffs.
Usage
Usage: suggestion-bot [options] [diff]
submit code reviews with suggestions based on your diffs
Arguments:
diff the diff to create suggestions from
Options:
-V, --version output the version number
-m, --message <msg> use the specified message as the PR comment
-h, --help display help for command
Examples:
# Submit current changes as suggestions
GITHUB_TOKEN=<secret> suggestion-bot "$(git diff)"
# Alternatively, pipe to suggestion-bot
# to avoid escape character issues
git diff | GITHUB_TOKEN=<secret> suggestion-bot
If your CI is hosted by Azure DevOps, replace GITHUB_TOKEN
with
AZURE_PERSONAL_ACCESS_TOKEN
.
Requirements
- Host your code on GitHub
- A GitHub personal access token
-- or --
- Host your code on Azure DevOps
- An Azure DevOps personal access token
Recipes
- Using
suggestion-bot
with GitHub Actions - Using
suggestion-bot
withclang-format
- Using
suggestion-bot
with Prettier
suggestion-bot
with GitHub Actions
Using Install
suggestion-bot
in your projectyarn add suggestion-bot --dev
Configure your GitHub workflow so
suggestion-bot
can access theGITHUB_TOKEN
secret provided by GitHub via an environment variable with the same name:# .github/workflows/build.yml jobs: lint: runs-on: ubuntu-latest steps: - name: Set up Node.js uses: actions/setup-node@v1 with: node-version: 12 - name: Checkout uses: actions/checkout@v2 - name: Install run: yarn - name: ClangFormat if: ${{ github.event_name == 'pull_request' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: scripts/clang-format-diff.sh | yarn suggestion-bot
suggestion-bot
with clang-format
Using Use
clang-format-diff
to format only changed files:
curl --silent --show-error --remote-name https://raw.githubusercontent.com/llvm/llvm-project/release/10.x/clang/tools/clang-format/clang-format-diff.py
git diff --unified=0 --no-color @^ \
| python clang-format-diff.py -p1 -regex '.*\.(cpp|cc|c\+\+|cxx|c|cl|h|hh|hpp|m|mm|inc)' -sort-includes \
| yarn suggestion-bot
suggestion-bot
with Prettier
Using We must first write a script that pipes Prettier's
output to diff
so we can feed it to suggestion-bot
later.
#!/usr/bin/env node
const { spawnSync } = require("child_process");
const fs = require("fs");
const prettier = require("prettier");
const diff = process.argv.slice(2).reduce((diff, filepath) => {
const source = fs.readFileSync(filepath, { encoding: "utf8" });
const { stdout } = spawnSync("diff", ["--unified", filepath, "-"], {
input: prettier.format(source, { filepath }),
encoding: "utf-8",
});
return diff + stdout;
}, "");
require("suggestion-bot")(diff);
Save the script somewhere, e.g. scripts/prettier-diff.js
, then invoke it with
Node:
node scripts/prettier-diff.js $(git ls-files '*.js')