quality

package module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 27, 2025 License: MIT Imports: 11 Imported by: 0

README

gzh-cli-quality

멀티 언어 코드 품질 도구 오케스트레이터 - Go, Python, JavaScript/TypeScript, Rust 프로젝트의 포매팅과 린팅을 하나의 명령어로 통합 실행합니다.

주요 기능

  • 통합 실행: 11+ 품질 도구를 단일 CLI로 제공
  • 병렬 처리: Worker Pool 패턴으로 빠른 실행
  • Git 통합: staged/changed 파일만 선택적 처리
  • 무설정 시작: 언어/도구 자동 감지로 즉시 사용
  • 멀티 리포트: JSON, HTML, Markdown 출력 지원

지원 도구

언어 포매터 린터
Go gofumpt, goimports golangci-lint
Python black ruff, pylint
JavaScript/TypeScript prettier eslint, tsc
Rust rustfmt, cargo-fmt clippy

빠른 시작

설치
소스에서 빌드
# 리포지토리 클론
git clone https://github.com/Gizzahub/gzh-cli-quality.git
cd gzh-cli-quality

# 빌드 (build/ 디렉토리에 gz-quality 바이너리 생성)
make build

# 또는 $GOPATH/bin에 직접 설치
make install
Go Install
# 최신 안정 버전
go install github.com/Gizzahub/gzh-cli-quality/cmd/gz-quality@v0.1.1

# 또는 최신 개발 버전
go install github.com/Gizzahub/gzh-cli-quality/cmd/gz-quality@latest
기본 사용법
# 전체 품질 검사 실행
gz-quality run

# staged 파일만 검사 (커밋 전 체크)
gz-quality run --staged

# 린팅만 실행 (파일 수정 없음)
gz-quality check

# 자동 수정 적용
gz-quality run --fix

# 특정 도구만 실행
gz-quality tool ruff --staged
gz-quality tool golangci-lint --since main

CLI 명령어

명령어 설명
gz-quality run 모든 포매팅 및 린팅 도구 실행
gz-quality check 린팅만 실행 (변경 없이 검사)
gz-quality init 프로젝트 설정 파일 생성
gz-quality analyze 프로젝트 분석 및 권장 도구 표시
gz-quality tool <name> 특정 도구 직접 실행
gz-quality install 품질 도구 설치
gz-quality upgrade 품질 도구 업그레이드
gz-quality version 도구 버전 확인
gz-quality list 사용 가능한 도구 목록
주요 옵션
# Git 기반 필터링
--staged              # staged 파일만
--changed             # 변경된 모든 파일 (staged + modified + untracked)
--since <ref>         # 특정 커밋 이후 변경 파일

# 실행 모드
--format-only         # 포매팅만 실행
--lint-only           # 린팅만 실행
--fix, -x             # 자동 수정 적용
--dry-run             # 실행 계획만 표시

# 성능
--workers, -w <n>     # 병렬 워커 수 (기본: CPU 코어 수)

# 리포트
--report <format>     # 리포트 형식 (json, html, markdown)
--output <path>       # 리포트 출력 경로

# 출력
--verbose, -v         # 상세 출력

설정

자동 설정 생성
gz-quality init
.gzquality.yml 예시
default_workers: 4
timeout: "10m"

tools:
  gofumpt:
    enabled: true
    priority: 10
  golangci-lint:
    enabled: true
    priority: 5
    config_file: ".golangci.yml"
  ruff:
    enabled: true
    priority: 7
    args: ["--fix"]

languages:
  Go:
    enabled: true
    preferred_tools: [gofumpt, goimports, golangci-lint]
  Python:
    enabled: true
    preferred_tools: [black, ruff]

exclude:
  - node_modules/**
  - vendor/**
  - .git/**
  - dist/**

사용 예시

커밋 전 검사
# staged 파일에 포매팅 적용 후 린팅
gz-quality run --staged --fix

# 린팅 이슈만 확인 (수정 없이)
gz-quality check --staged
PR 검사 (CI/CD)
# main 브랜치 이후 변경 파일 검사
gz-quality check --since main

# JSON 리포트 생성
gz-quality check --since main --report json --output quality-report.json
특정 언어만 검사
# Go 도구만 실행
gz-quality tool gofumpt && gz-quality tool golangci-lint

# Python 도구만 실행
gz-quality tool ruff --fix

출력 예시

🔍 프로젝트 분석 중...
📋 실행 계획: 3개 도구, 15개 파일
⚡ 실행 중 (4 workers)...
  ✅ gofumpt (0.5s) - 5 files
  ✅ goimports (0.3s) - 5 files
  ⚠️ golangci-lint (2.1s) - 2 issues
    main.go:42:15 warning: unused variable 'x' (deadcode)
    utils.go:18:1 error: missing return (typecheck)
✨ 완료: 2.9s, 15 files, 2 issues

문서

사용자 가이드
개발자 문서

개발

프로젝트 빌드
# 의존성 다운로드
go mod download

# 빌드
make build

# 테스트 실행
make test

# 커버리지 리포트 생성
make test-coverage

# 린트 실행
make lint

# 전체 품질 검사 (포매팅 + 린트 + 테스트)
make quality
바이너리 실행
# 빌드 후
./build/gz-quality version
./build/gz-quality list
./build/gz-quality run --help

# 또는 설치 후
gz-quality version

요구사항

런타임
  • Go 1.24.0+
  • Git 2.0+
  • 각 언어별 품질 도구 (자동 설치 지원: gz-quality install)
개발 환경
  • Go 1.24.0+
  • Make
  • golangci-lint (선택사항, make lint 실행시 필요)

라이선스

MIT License - LICENSE 참조


gzh-cli에서 분리된 품질 도구 모듈

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewQualityCmd

func NewQualityCmd() *cobra.Command

NewQualityCmd creates the quality command.

Types

type Config

type Config struct {
	Enabled   bool                       `yaml:"enabled"`
	Languages map[string]*LanguageConfig `yaml:"languages"`
}

Config structures for YAML generation.

func (*Config) ToYAML

func (c *Config) ToYAML() (string, error)

type LanguageConfig

type LanguageConfig struct {
	Enabled bool                   `yaml:"enabled"`
	Tools   map[string]*ToolConfig `yaml:"tools"`
}

type ProjectAnalyzerAdapter

type ProjectAnalyzerAdapter struct {
	// contains filtered or unexported fields
}

ProjectAnalyzerAdapter adapts detector.ProjectAnalyzer to executor.ProjectAnalyzer interface.

func (*ProjectAnalyzerAdapter) AnalyzeProject

func (a *ProjectAnalyzerAdapter) AnalyzeProject(projectRoot string, registry tools.ToolRegistry) (*executor.AnalysisResult, error)

func (*ProjectAnalyzerAdapter) GetOptimalToolSelection

func (a *ProjectAnalyzerAdapter) GetOptimalToolSelection(result *executor.AnalysisResult, registry tools.ToolRegistry) map[string][]tools.QualityTool

type QualityManager

type QualityManager struct {
	// contains filtered or unexported fields
}

QualityManager manages the quality command functionality.

func NewQualityManager

func NewQualityManager() *QualityManager

NewQualityManager creates a new quality manager.

type ToolConfig

type ToolConfig struct {
	Enabled bool `yaml:"enabled"`
}

Directories

Path Synopsis
cmd
gz-quality command
Package detector provides language and tool detection capabilities for code quality analysis.
Package detector provides language and tool detection capabilities for code quality analysis.
Package executor provides parallel execution of quality tools using worker pools.
Package executor provides parallel execution of quality tools using worker pools.
tests
Package tools provides quality tool implementations for multiple programming languages.
Package tools provides quality tool implementations for multiple programming languages.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL