类似语法语言的先进林格。
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规则之外添加自定义棉绒规则。要添加新的棉绒规则,请按照以下步骤:
配x 如果您添加了新规则或格式化器,则必须更新相关测试。
为您提出的棉布规则创建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
} b。在registerAllRules中注册您的新规则,也许是internal/engine.go中的Engine结构的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/new_rule.go )。
b。为您的新规则实现IssueFormatter接口:
type NewRuleFormatter struct {}
func ( f * NewRuleFormatter ) Format (
issue types. Issue ,
snippet * internal. SourceCode ,
) string {
// Implement formatting logic for new rule here.
} c。将新的格式器添加到formatter/fmt.go中的GetFormatter函数中。
func GetFormatter ( rule string ) IssueFormatter {
switch rule {
// ...
case "new_rule" : // Add your new rule here
return & NewRuleFormatter {}
default :
return & DefaultFormatter {}
}
}为您的新规则和格式化添加综合测试。
更新文档以包括有关新规则的信息。
通过您的实施,测试和文档更新提交拉动请求。
通过遵循以下步骤,您可以以结构化的方式提出,讨论和添加新的棉绒规则,以确保它们正确整合到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 )建议该项目根据麻省理工学院许可证分发。有关更多信息,请参见LICENSE 。