pylintを使ってPython linterを実装しようとしています。しかし、各Pythonファイルのスコアを取得し、スコアを向上させるための提案を表示しています。また、pylintスコアが6.0未満の場合、GitHub Actionsタスクを終了したいのですが、現在はタスクに失敗しません。コードを終了する方法はありますが、同じ条件を設定することはできません。すべてのPythonファイルをLintしたいのですが、単一のPythonファイルをLintした後、このコードは終了します。確認できますか?終了コードがエラーに似ている場合は終了し、それ以外の場合はLingtingを続行する必要があります。
Pylintにはエラーと警告のためのさまざまな終了コードがありますが、それに条件を設定することはできません。pylint 終了コード
私が使用したワークフローは次のとおりです。
---
name: Python Notebooks Linting
on:
push:
branches:
- 'main'
repository_dispatch:
# types: [python-lint] test
jobs:
linting:
runs-on: ubuntu-latest
steps:
- name: Checkout the code
uses: actions/checkout@v2
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pylint
pip install umsgpack
pip install cryptography
pip install pylint-fail-under
- name: pylint version
run: pylint --version
- name: Analysing the code with pylint
run: |
set -e
for file in **/*.py; do pylint "$file"; done
ただし、このコードは単一のファイルをLintingした後に終了します。終了コードが特定の数値である場合は、Lintingを終了する必要があるという条件を設定したいと思います。これをどのように実装しますか?
答え1
私はこの要件を達成するためにさまざまな方法を使用しました。 Pythonリポジトリにある単一のファイルのpylintスコアが6.0未満の場合、GitHubワークフローは失敗します。 forループでfindコマンドを使用すると、エラーに対応する終了コードが返された場合にジョブを終了できます。
- name: Lints each python file and fails if pylint score is less than 6.0
run: |
for file in $(find -name '*.py')
do
pylint --disable=E0401,W0611 "$file" --fail-under=6.0;
done