구문 및 의미 검사 자동화를 위한 pre-commit-config-shellcheck
6576 단어 precommitautomationpythonshell
추론
이미 작성된 코드를 두 번째로 확인하는 것은 custom software development에 관련된 대부분의 프로그래머에게 소모적이고 신뢰할 수 없는 작업일 수 있습니다. 며칠 전 코드를 리팩토링하는 동안 사전 커밋 구성 파일의 셸 코드에서 몇 가지 실수를 발견했습니다. 이러한 오류는 경고 없이 오랫동안 존재해 왔습니다. 그렇기 때문에 이러한 코드 검사가 더 안정적이거나 자동으로 진행되는지 생각했습니다. 이후 pre-commit-config-shellcheck은 바로 이러한 목적을 위해 만들어졌습니다.
차이점이 뭐야
이 도구는 프로젝트의 .pre-commit-config.yaml 파일에서 실수를 자동으로 감지하고 해결하도록 도와줍니다. 모든 구문 및 대부분의 의미 검사가 자동으로 수행됩니다. 또한 버그 수정 권장 사항을 받게 됩니다. 이것은 다른 도구인 Shellcheck를 사용하여 구성 파일의 모든 셸 코드 항목을 자동으로 확인하여 수행됩니다.
작동 방식
쉘체크
Shellcheck은 쉘 스크립트 정적 분석 도구입니다. 이 도구의 주요 목적은 널리 사용되는 구문 오류를 찾고 향후 상황에서 스크립트가 실패할 수 있는 코너 케이스를 지적하면서 이를 수정하기 위한 제안을 제공하는 것입니다.
파일 확인
이 도구의 모든 검사는 .pre-commit-config.yaml 파일에서 수행되지만 이 파일은 셸 코드뿐만 아니라 다른 구성 지점을 포함하는 파일의 구조 때문에 Shellcheck에서 직접 분석할 수 없습니다. 발견된 셸 진입점을 사용하여 임시 파일 목록을 만들고 이를 개별적으로 확인하여 이에 대한 해결 방법을 찾았습니다.
하위 프로세스
Shellcheck를 사용하는 주요 방법은 터미널을 통하는 것이며 이 도구에는 다른 프로그래밍 언어에 대한 어댑터가 없으므로 각 임시 파일에 대한 검사를 수행하기 위해 Python 하위 프로세스 모듈을 사용합니다. 그런 다음 하위 프로세스의 출력이 수집되고 도구는 경고 및 해당 위치 목록과 함께 단일 pre-commit-config-shellcheck 출력을 형성합니다.
사용 및 출력 예:
; pre_commit_config_shellcheck.py .pre-commit-config.yaml
In entry "seed-isort-config" on line 9:
var = 42
^-- SC2283 (error): Remove spaces around = to assign (or use [ ] to compare, or quote '=' if literal).
In entry "seed-isort-config" on line 10:
echo '$var'
^----^ SC2016 (info): Expressions don't expand in single quotes, use double quotes for that.
For more information:
https://www.shellcheck.net/wiki/SC2283 -- Remove spaces around = to assign ...
https://www.shellcheck.net/wiki/SC2016 -- Expressions don't expand in singl...
In entry "removestar" on line 19:
removestar -i ${NAME}
^-----^ SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean:
removestar -i "${NAME}"
For more information:
https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...
사용하기 쉬운
사용자를 위해 이 도구를 간단하게 유지하기 위해 pre-commit-config-shellcheck를 사용하는 몇 가지 방법이 있습니다.
명령줄 도구로
$ pip install pre-commit-config-shellcheck
$ pre_commit_config_shellcheck.py .pre-commit-config.yaml
사전 커밋 후크로
# .pre-commit-config.yaml
- repo: "https://github.com/Anadea/pre-commit-config-shellcheck"
rev: "0.3.4"
hooks:
- id: "pre-commit-config-shellcheck"
또한 GitHub 작업으로
- name: "pre-commit-config-shellcheck"
uses: "action/[email protected]"
id: "pre-commit-config-shellcheck"
with:
config: ".pre-commit-config.yaml"
결론
라이선스에 따라 타사 사용을 위해 Pre-commit-config-shellcheck가 성공적으로 생성, 테스트 및 배포되었습니다. 이 도구, 추가 정보 및 라이센스는 GitHub에서 찾을 수 있습니다.
Reference
이 문제에 관하여(구문 및 의미 검사 자동화를 위한 pre-commit-config-shellcheck), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/anadea/pre-commit-config-shellcheck-for-syntax-and-semantic-checks-automation-460e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)