점수를 추출하기 위해 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")

관련 정보