pylintコマンドの終了コードをキャプチャするには、Github操作で検索を使用する必要があります。

pylintコマンドの終了コードをキャプチャするには、Github操作で検索を使用する必要があります。

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

引用:Githubワークフローを使用してPythonファイルを確認する

関連情報