mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-09-26 20:41:53 +08:00
[CI] add codestyle_check action (#2972)
* [CI] add codestyle_check action * [CI] Integrate codestyle check via pre-commit in GitHub Actions
This commit is contained in:
48
.github/workflows/Codestyle-Check.yml
vendored
Normal file
48
.github/workflows/Codestyle-Check.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
name: Codestyle-Check
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: ["develop"]
|
||||
|
||||
jobs:
|
||||
pre-commit:
|
||||
name: Pre Commit
|
||||
if: ${{ github.repository_owner == 'PaddlePaddle' }}
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
PR_ID: ${{ github.event.pull_request.number }}
|
||||
BRANCH: develop
|
||||
|
||||
steps:
|
||||
- name: Cleanup
|
||||
run: |
|
||||
rm -rf * .[^.]*
|
||||
|
||||
- name: Checkout base repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.base.ref }}
|
||||
fetch-depth: 1000
|
||||
|
||||
- name: Merge PR to test branch
|
||||
run: |
|
||||
git fetch origin pull/${PR_ID}/merge
|
||||
git checkout -b test FETCH_HEAD
|
||||
|
||||
- name: Setup python3.10
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10'
|
||||
cache: 'pip'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install pre-commit==4.2.0 cpplint==1.6.0 clang-format==13.0.0
|
||||
|
||||
- name: Check pre-commit
|
||||
env:
|
||||
SKIP_CLANG_TIDY_CHECK: "ON"
|
||||
run: |
|
||||
set +e
|
||||
bash -x tools/codestyle/pre_commit.sh;EXCODE=$?
|
||||
exit $EXCODE
|
68
tools/codestyle/pre_commit.sh
Normal file
68
tools/codestyle/pre_commit.sh
Normal file
@@ -0,0 +1,68 @@
|
||||
# Copyright (c) 2025 PaddlePaddle Authors. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set +x
|
||||
|
||||
# use pre-commit 4.2.0
|
||||
if ! [[ $(pre-commit --version) == *"4.2.0"* ]]; then
|
||||
pip install pre-commit==4.2.0 1>nul
|
||||
fi
|
||||
|
||||
# Install clang-format before git commit to avoid repeat installation due to
|
||||
# pre-commit multi-thread running.
|
||||
readonly VERSION="13.0.0"
|
||||
version=$(clang-format -version)
|
||||
if ! [[ $(python -V 2>&1 | awk '{print $2}' | awk -F '.' '{print $1$2}') -ge 36 ]]; then
|
||||
echo "clang-format installation by pip need python version great equal 3.6,
|
||||
please change the default python to higher version."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
diff_files=$(git diff --name-only --diff-filter=ACMR ${BRANCH})
|
||||
num_diff_files=$(echo "$diff_files" | wc -l)
|
||||
echo -e "diff files between pr and ${BRANCH}:\n${diff_files}"
|
||||
|
||||
echo "Checking code style by pre-commit ..."
|
||||
pre-commit run --files ${diff_files};check_error=$?
|
||||
|
||||
if test ! -z "$(git diff)"; then
|
||||
echo -e '\n************************************************************************************'
|
||||
echo -e "These files have been formatted by code format hook. You should use pre-commit to \
|
||||
format them before git push."
|
||||
echo -e '************************************************************************************\n'
|
||||
git diff 2>&1
|
||||
fi
|
||||
|
||||
echo -e '\n************************************************************************************'
|
||||
if [ ${check_error} != 0 ];then
|
||||
echo "Your PR code style check failed."
|
||||
echo "Please install pre-commit locally and set up git hook scripts:"
|
||||
echo ""
|
||||
echo " pip install pre-commit==4.2.0"
|
||||
echo " pre-commit install"
|
||||
echo ""
|
||||
if [[ $num_diff_files -le 100 ]];then
|
||||
echo "Then, run pre-commit to check codestyle issues in your PR:"
|
||||
echo ""
|
||||
echo " pre-commit run --files" $(echo ${diff_files} | tr "\n" " ")
|
||||
echo ""
|
||||
fi
|
||||
echo "For more information, please refer to our codestyle check guide:"
|
||||
echo "https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/git_guides/codestyle_check_guide_cn.html"
|
||||
else
|
||||
echo "Your PR code style check passed."
|
||||
fi
|
||||
echo -e '************************************************************************************\n'
|
||||
|
||||
exit ${check_error}
|
Reference in New Issue
Block a user