quality

package module
v0.1.0 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@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
tests

Jump to

Keyboard shortcuts

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