GOのような文法言語の前線。
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 :構成ファイルをカスタマイズして、特定のLintルールを有効または無効にし、Cyclomaticの複雑さのしきい値を設定します。
# .tlin.yaml
name : tlin
rules :
useless-break :
severity : WARNING
deprecated-function :
severity : OFF 私たちのリナーを使用すると、デフォルトのGolangci-Lintルールを超えてカスタムリントルールを追加できます。新しい糸くずルールを追加するには、次の手順に従ってください。
ショ和 新しいルールまたはフォーマッタを追加した場合は、関連するテストを更新する必要があります。
提案されているLINTルールのRFC(コメントのリクエスト)ドキュメントを作成します。
Tlinリポジトリで新しい問題を開き、RFCドキュメントを添付します。
コミュニティのフィードバックとメンテナーの承認を待ちます。フィードバックに基づいてRFCを反復する準備をしてください。
RFCが承認されたら、実装を続行します。
a。新しいルールのために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に登録し、おそらくregisterDefaultRules Engineのinternal/engine.go :
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パッケージに新しいフォーマッタを作成します。
a。新しいファイルを作成します(例: 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 {}
}
}新しいルールとフォーマッタの包括的なテストを追加します。
ドキュメントを更新して、新しいルールに関する情報を含めます。
実装、テスト、およびドキュメントの更新を使用して、プルリクエストを送信します。
これらの手順に従うことにより、構造化された方法で新しいLintルールを提案、議論、追加し、Tlinプロジェクトに適切に統合されるようにすることができます。
Tlinは、その動作をカスタマイズするためにいくつかのフラグをサポートしています。
-timeout <duration> :リンターのタイムアウトを設定します(デフォルト:5m)。例: -timeout 1m30s-cyclo :Cyclomaticの複雑さ分析を実行します-threshold <int> :Cyclomaticの複雑さのしきい値を設定します(デフォルト: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参照してください。