프로젝트 소개
ShellCheck는 GNU GPLv3 라이선스로 배포되는 bash/sh 스크립트용 정적 분석 도구입니다. 스크립트를 실행하지 않고 경고와 제안을 보고합니다.
주요 목표는 초보자들이 발생시키는 암호 같은 쉘 오류를 명확히 하고, 중급 수준의 의미적 문제로 인해 쉘이 예상과 반대로 작동하는 경우를 해결하며, 이후에 작동하는 스크립트를 손상시킬 수 있는 세부 사항이나 예외 상황을 파악하는 것입니다.
README 파일은 다양한 문제 범주를 문서화하고 있습니다: 인용 문제(미인용 변수, 인용된 타일드 확장, 변수 내 문자 리터럴 인용, 조기 확장된 트랩), 조건적 오류(상수 테스트 표현식, 공백 누락, =~에서 인용된 정규식, 지원되지 않는 [ ] 연산자), 자주 잘못 사용되는 명령어(정규식 컨텍스트에서 글로브, sudo 리디렉션, 잘못된 exec 사용, 암시적 find 우선순위), 초보자 구문 오류(할당에서 = 주변 공백, 쉼표로 구분된 배열, else if), 스타일 제안(불필요한 cat, 백틱 대 $(), 리디렉션 블록), 데이터 및 타입 오류(문자열에 배열 할당, printf 인수 개수 불일치, 하위 쉘에서의 할당), 견고성 문제(비극적인 rm, 옵션으로 될 수 있는 글로브, find -exec 쉘 인젝션), 그리고 shebang과 관련된 이식성 경고를 포함합니다.
사용 옵션은 shellcheck.net에서 스크립트 붙여넣기, 터미널에서 `shellcheck yourscript` 실행, 에디터 통합(Vim의 ALE/Neomake/Syntastic, Emacs의 Flycheck/Flymake, Sublime의 SublimeLinter, Pulsar, VSCode, 기타 에디터용 GCC 오류 호환성) 및 빌드 또는 테스트 세트에 포함(Makefile 및 Travis CI 예제 포함)입니다. README는 Travis CI, Codacy, Code Climate, Code Factor, CircleCI, GitHub Actions(Linux만), Trunk Code Quality, CodeRabbit과 같은 서비스에서 사전 설치된 상태로 제공되며, 예기치 않은 빌드 중단을 방지하기 위해 특정 버전 고정을 권장합니다.
출력 형식은 ANSI 색상이 있는 또는 없는 인간 가독성 텍스트, JSON, CheckStyle 호환 XML, GCC 호환 경고를 포함하며, 프로젝트 위키에서 통합 문서를 제공합니다.
설치는 여러 패키지 관리자(Cabal, Stack, apt, pacman, emerge, yum, dnf, pkg, Homebrew, MacPorts, zypper, eopkg, Chocolatey, winget, scoop, conda-forge, Snap, Nix, Flox), Docker 이미지(koalaman/shellcheck 및 shellcheck-alpine), Linux x86_64/armv6hf/aarch64, macOS aarch64/x86_64, Windows x86용 사전 컴파일된 이진 파일, 그리고 pre-commit 훅 구성이 포함됩니다. 소스에서 빌드하려면 Haskell과 Cabal이 필요하며, 컴파일에 약 2GB의 RAM이 필요하며, `cabal test`로 테스트를 실행합니다.
환경 변수, 명령줄, 파일 내에서 개별적으로 또는 전역적으로 문제를 무시할 수 있습니다. GitHub 풀 리퀘스트로 기여를 받아들입니다. README는 각 경고 코드의 장문 설명을 위한 위키와 shfmt(ShellCheck가 의도적으로 강제하지 않는 포맷팅 도구)로 이동합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.