GolangCI Lint
Background
- Go는 자체적으로 gofmt, vet 와 같은 정적 분석 도구가 내장되어 있음
- 하지만 프로젝트가 커질 경우 코드에 대한 합의가 필요함
- 커밋, 푸시 이전에 CI이외의 방법으로는 필수적으로 정적 분석을 강제하는 수단이 없음
- golangci-lint가 해결책이 될 수 있음
golangci-lint
- Linter란 소스코드를 분석하여 프로그램 오류, 버그, 스타일 오류 등에 flag를 달아 놓는 도구
- golangci-lint는 Linter의 모음집이며 실행시켜주는 도구임
Feature
- Github Action에서 공직적으로 지원함 (VS code, Vim 등 다양한 integration 지원)
- 로컬 개발환경에서 정적 분석을 실행하기에 용이함
- Parallel하게 linter를 실행시키며 Go build 캐시와 캐시 분석 결과를 재사용하여 아주 빠름
- Yaml 기반 configuration
Usage
Github Action
- 여러가지 디폴트 Linter들이 설정되어 있어서 추가만 하여도 충분
- 이슈 발견 시 Github annotation을 생성해주기 때문에 golangci-lint 이슈를 디깅할 필요 없음
- Linter란 소스코드를 분석하여 프로그램 오류, 버그, 스타일 오류 등에 flag를 달아 놓는 도구
- golangci-lint는 Linter의 모음집이며 실행시켜주는 도구임
Feature
- Github Action에서 공직적으로 지원함 (VS code, Vim 등 다양한 integration 지원)
- 로컬 개발환경에서 정적 분석을 실행하기에 용이함
- Parallel하게 linter를 실행시키며 Go build 캐시와 캐시 분석 결과를 재사용하여 아주 빠름
- Yaml 기반 configuration
Usage
Github Action
- 여러가지 디폴트 Linter들이 설정되어 있어서 추가만 하여도 충분
- 이슈 발견 시 Github annotation을 생성해주기 때문에 golangci-lint 이슈를 디깅할 필요 없음
- golangci-lint.yml 예시
# .github/workflow/lint.yml
name: Lint
# This workflow is run on every pull request and push to main
# The `golangci` job will pass without running if no *.{go, mod, sum} files have been modified.
on:
pull_request:
push:
branches:
- main
- master
- "release/*"
jobs:
golangci:
name: golangci-lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: technote-space/get-diff-action@v4
with:
PATTERNS: |
**/**.go
go.mod
go.sum
- uses: golangci/golangci-lint-action@v3
with:
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
version: v1.45.2
args: --timeout 10m
github-token: ${{ secrets.github_token }}
if: "env.GIT_DIFF != ''" # Run only when "env.GIT_DIFF" is null
Reference
Author And Source
이 문제에 관하여(GolangCI Lint), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@harvey/GolangCI-Lint
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여(GolangCI Lint), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@harvey/GolangCI-Lint저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)