類似語法語言的先進林格。
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 。