aaerofeev / bitbucket-static-reviews
Checkstyle 集成到 stash/bitbucket 提交请求
1.0.2
2019-02-01 07:50 UTC
Requires
- php: >=7.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- ext-simplexml: *
- guzzlehttp/guzzle: ^6.3
- league/statsd: ^1.4
- ptlis/diff-parser: ~0.6
- symfony/console: ^3.4
This package is auto-updated.
Last update: 2024-09-29 05:08:37 UTC
README
Checkstyle 格式集成到 stash / bitbucket
读取 checkstyle 格式报告并写入 stash/bitbucket 提交请求的注释
功能
- 基于 checkstyle 报告发布评论
- 检查器仅对修改的代码或上下文进行工作模式
- 错误分组
- 重要性限制
- 注释数量限制:总、按文件、按组
- 对已修复错误的反应(游戏化)
- 按错误模式或按文件忽略
- 向 statsd 发送统计信息
自动添加 "已修复" / "Fixed" 标记
错误分组 / 错误分组
如何工作
所需数据:项目、仓库和分支名称。如果存在,注释将被发布到具有 OPEN 状态的拉取请求中。
- 传递
git diff origin/master <BRANCH>
或修订差异的结果 - 按顺序传递静态分析器的工作结果,格式为 checkstyle
- 分析和发送评论
英文
本项目读取 checkstyle 格式报告并将其写入 stash / bitbucket 拉取请求。
功能
- 基于 checkstyle 报告发布评论
- 可以配置为仅检查上下文或修改的代码
- 错误分组
- 严重性限制
- 限制注释数量:总、按文件、按组
- 对已修复错误的反应(游戏化)
- 按错误模式或按文件忽略
- 向 statsd 发送统计信息
如何工作
所需选项:项目、仓库和分支名称。如果存在,注释将被发布到具有 OPEN 状态的拉取请求中。
- 传递
git diff origin/master <BRANCH>
或修订差异的结果到分析器 - 收集静态分析器的报告
- 分析评论并发送到 Bitbucket API
Bitbucket API
https://developer.atlassian.com/server/bitbucket/reference/rest-api/
配置
默认配置文件名为 .config.php
<?php use BitbucketReviews\Config; /** * @see \BitbucketReviews\Config */ return [ // Stash API config // https://<hostname>/projects/<project>/repos/<repository>/browse 'stash' => [ 'url' => 'https://bitbucket.org', // @see https://confluence.atlassian.com/bitbucketserver/personal-access-tokens-939515499.html 'accessToken' => '<secret-token-read-perms>', 'project' => '<project>', 'repository' => '<repository>', 'debug' => false, ], 'analyzer' => [ 'inspect' => Config::INSPECT_CONTEXT, 'ignoredText' => [ 'eslint.rules.radix', ], 'ignoredFiles' => [ 'composer.json', 'composer.lock', ], 'limit' => Config::NO_LIMIT, 'limitPerFile' => Config::NO_LIMIT, 'limitPerGroup' => Config::NO_LIMIT, ], // Optional 'statsd' => [ 'host' => '<statsd-host>', 'port' => '<statsd-port>', 'namespace' => 'myApp.code-analyze', ], ];
用法示例
/vendor/bin/bitbucket-reviews run refs/head/MY_BRANCH git-diff.txt \
--config config.php \
--checkstyle eslint.xml:/code/base \
--checkstyle phan.xml \
--checkstyle phpstan.xml
run [options] [--] <branch> <diff>
Arguments:
branch Branch name, full path like `refs/heads/master`
diff git diff output file path
Options:
--diff-vsc[=DIFF-VSC] git diff output file path [default: "git"]
-c, --checkstyle[=CHECKSTYLE] checkstyle file path <filename>:<root> (multiple values allowed)
-k, --config[=CONFIG] config file [default: ".config.php"]
高级用法
#!/usr/bin/env bash set -x function join { local IFS="$1"; shift; echo "$*"; } BRANCH_NAME=$1 # my-feature CONTEXT_LINES=$2 # 10 CODE_PATH=/code mkdir reports ### Saving DIFF for analyzer - diff.txt git diff -U${CONTEXT_LINES:-10} master...${BRANCH_NAME} > diff.txt ### Collecting ESLINT report - eslint.xml ### JS_IMAGE=yarn:latest ESLINT_FILES=$(git diff --name-only master...${BRANCH_NAME} | grep -E "\.(js|vue)$") docker run --rm \ --volume $(pwd):${CODE_PATH} \ --workdir ${CODE_PATH} \ --entrypoint=${CODE_PATH}/node_modules/.bin/eslint \ --interactive \ ${JS_IMAGE} \ ${ESLINT_FILES} -o ./reports/eslint.xml -f checkstyle ### Collecting PHAN report - phan.xml ### PHP_IMAGE=php7-cli:latest PHAN_FILES=$(join , $(git diff --name-only origin/master...${BRANCH_NAME} | grep -E "\.php$")) docker run --rm \ --volume $(pwd):${CODE_PATH} \ --workdir ${CODE_PATH} \ --entrypoint ${CODE_PATH}/vendor/bin/phan \ --interactive \ ${PHP_IMAGE} \ -k ${CODE_PATH}/.phan.php -m checkstyle -o ./reports/phan.xml --include-analysis-file-list ${PHAN_FILES} ### Static review REVIEW_IMAGE=aaerofeev/bitbucket-static-reviews:latest docker pull ${REVIEW_IMAGE} docker run --rm \ --volume $(pwd)/reports:/reports \ --volume $(pwd)/bin/analyze/review.php:/code/config.php \ ${REVIEW_IMAGE} \ run -k /code/config.php -c /reports/eslint.xml:${CODE_PATH} -c /reports/phan.xml refs/heads/${BRANCH_NAME} /reports/diff.txt exit 0