スコアを抽出するためにpylintの結果を解析しますか?

スコアを抽出するためにpylintの結果を解析しますか?

私はアクションを使用してgithub CIを構築しています。pylintを実行して結果をPRメッセージに書き込むことができます。ただし、スコアが特定のしきい値未満の場合は、操作が失敗するように正確なスコアを解析したいと思います。関連コードは次のとおりです。

- name: Lint with pylint
  working-directory: ./
  run: |
    echo '${{ steps.files.outputs.files_updated }} ${{ steps.files.outputs.files_created }}'
    pip install pylint
    OUTPUT=$(pylint ${{ steps.files.outputs.files_updated }} ${{ steps.files.outputs.files_created }}  --exit-zero --jobs=0)
    SCORE=$OUTPUT > sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p'
    echo "Pylint finished with score: $SCORE"
    echo 'MESSAGE<<EOF' >> $GITHUB_ENV
    echo  "$OUTPUT"  >> $GITHUB_ENV
    echo 'EOF' >> $GITHUB_ENV

現在$OUTPUTとして保存されているpylint結果を解析し、正確なスコアを解析して$SCOREに保存する命令は何ですか?

    OUTPUT=$(pylint ${{ steps.files.outputs.files_updated }} ${{ steps.files.outputs.files_created }}  --exit-zero --jobs=0)
    SCORE=$OUTPUT > sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p'

以下は、「0.18」部分を解析するために必要な出力の例です。

************* Module src.server
src/server.py:1:0: C0114: Missing module docstring (missing-module-docstring)
src/server.py:5:0: W0401: Wildcard import src.endpoints (wildcard-import)
...
-----------------------------------
Your code has been rated at 0.18/10

ベストアンサー1

使用sed

SCORE=$(sed -n '$s/[^0-9]*\([0-9.]*\).*/\1/p' <<< "$OUTPUT")

おすすめ記事