Go와 같은 문법 언어를위한 사전 Linter.
Tlin은 GO 및 GNO 프로그래밍 언어 모두를 위해 설계된 린터입니다. Golangci-Lint의 기능을 메인 라인 엔진으로 활용하여 GO와 같은 문법 언어에 대한 강력한 코드 분석을 제공합니다.
Rust의 Clippy에서 영감을 얻은 Tlin은 기본 Golangci-Lint 규칙을 넘어서 추가 코드 개선 제안을 제공하는 것을 목표로합니다.
Tlin CLI를 설치하려면 다음 단계를 따르십시오.
git clone https://github.com/gnolang/tlin cd tlingo install ./cmd/tlin 그게 다야! 이제 터미널에서 tlin 명령을 사용할 수 있습니다.
tlin < path > 분석하려는 파일 또는 디렉토리 경로로 <path> 교체하십시오.
현재 디렉토리를 확인하려면 실행하십시오.
tlin . Tlin은 동작을 사용자 정의하기 위해 구성 파일 ( .tlin.yaml )을 지원합니다. 실행하여 기본 구성 파일을 생성 할 수 있습니다.
tlin -init 이 명령은 다음 내용이있는 현재 디렉토리에 .tlin.yaml 파일을 만듭니다.
# .tlin.yaml
name : tlin
rules :구성 파일을 사용자 정의하여 특정 린트 규칙을 활성화 또는 비활성화하고 사이클로 더 복잡성 임계 값을 설정하는 등을 설정할 수 있습니다.
# .tlin.yaml
name : tlin
rules :
useless-break :
severity : WARNING
deprecated-function :
severity : OFF 우리의 Linter는 기본 Golangci-Lint 규칙을 넘어 사용자 정의 린트 규칙을 추가 할 수 있습니다. 새로운 보풀 규칙을 추가하려면 다음 단계를 따르십시오.
켈 새로운 규칙이나 Formatter를 추가 한 경우 관련 테스트를 업데이트해야합니다.
제안 된 보린 규칙에 대한 RFC (의견 요청) 문서 작성 :
Tlin 저장소에서 새로운 문제를 열고 RFC 문서를 첨부하십시오.
커뮤니티 피드백과 관리자 승인을 기다리십시오. 피드백에 따라 RFC를 반복 할 준비를하십시오.
RFC가 승인되면 구현을 진행하십시오.
에이. 새 규칙에 대한 LintRule 인터페이스 구현 :
type NewRule struct {}
func ( r * NewRule ) Check ( filename string , node * ast. File ) ([]types. Issue , error ) {
// Implement your lint rule logic here
// return a slice of Issues and any error encountered
} 비. registerAllRules 에 새 규칙을 등록하고 internal/engine.go 에서 Engine Struct의 registerDefaultRules 메소드를 등록하십시오.
func ( e * Engine ) registerDefaultRules () {
e . rules = append ( e . rules ,
& GolangciLintRule {},
// ...
& NewRule {}, // Add your new rule here
)
} func ( e * Engine ) registerAllRules () {
e . rules = append ( e . rules ,
& GolangciLintRule {},
// ...
& NewRule {}, // Add your new rule here
)
} (선택 사항) 규칙이 특수 서식이 필요한 경우 formatter 패키지에서 새 Formatter를 작성하십시오.
에이. 새 파일 (예 : formatter/new_rule.go )을 만듭니다.
비. 새 규칙에 대한 IssueFormatter 인터페이스 구현 :
type NewRuleFormatter struct {}
func ( f * NewRuleFormatter ) Format (
issue types. Issue ,
snippet * internal. SourceCode ,
) string {
// Implement formatting logic for new rule here.
} 기음. formatter/fmt.go 의 GetFormatter 함수에 새 Formatter를 추가하십시오.
func GetFormatter ( rule string ) IssueFormatter {
switch rule {
// ...
case "new_rule" : // Add your new rule here
return & NewRuleFormatter {}
default :
return & DefaultFormatter {}
}
}새로운 규칙과 Formatter에 대한 포괄적 인 테스트를 추가하십시오.
새로운 규칙에 대한 정보를 포함하도록 문서를 업데이트하십시오.
구현, 테스트 및 문서 업데이트와 함께 풀 요청을 제출하십시오.
이 단계를 수행함으로써 새로운 보풀 규칙을 구조화 된 방식으로 제안, 토론 및 추가하여 Tlin 프로젝트에 올바르게 통합되도록 할 수 있습니다.
Tlin은 동작을 사용자 정의하기 위해 몇 가지 플래그를 지원합니다.
-timeout <duration> : Linter의 시간 초과를 설정합니다 (기본값 : 5m). 예 : -timeout 1m30s-cyclo : 순환 복잡성 분석을 실행하십시오-threshold <int> : 사이클로 음향 복잡성 임계 값을 설정합니다 (기본값 : 10)-ignore <rules> : 무시할 보충 규칙 목록-cfg : 제어 흐름 그래프 분석을 실행합니다-func <name> : CFG 분석의 기능 이름을 지정하십시오-fix : 문제를 자동으로 수정합니다-dry-run : 드라이 런 모드로 실행 (적용하지 않고 수정)-confidence <float> : 자동 고정에 대한 신뢰 임계 값 설정 (0.0 ~ 1.0, 기본값 : 0.75)-o <path> : stdout 대신 파일에 출력 쓰기-json-output : 출력 결과 JSON 형식으로 결과가 나옵니다-init : 현재 디렉토리에서 새 Tlin 구성 파일 초기화-c <path> : 사용자 정의 구성 파일을 지정합니다 우리는 버그 보고서, 기능 요청 및 풀 요청을 포함하여 모든 형태의 기여를 환영합니다. 문제를 열거 나 풀어 요청을 제출하십시오.
tlin ) 제안 이 프로젝트는 MIT 라이센스에 따라 배포됩니다. 자세한 내용은 LICENSE 참조하십시오.