Advance Linter for go-like grammar languages.
tlin is an linter designed for both Go and gno programming languages. It leverages the functionality of golangci-lint as its main linting engine, providing powerful code analysis for go-like grammar languages.
Inspired by Rust's clippy, tlin aims to provide additional code improvement suggestions beyond the default golangci-lint rules.
- Support for Go (.go) and Gno (.gno) files
- Ability to add custom lint rules
- Additional code improvement suggestion, such as detecting unnecessary code
- Auto-fixing for some lint rules
- Cyclomatic complexity analysis
To install tlin CLI, follow these steps:
git clone https://github.com/gnolang/tlin
cd tlin
go install ./cmd/tlin
tlin <path>
Replace <path>
with the file or directory path you want to analyze.
To check the current directory, run:
tlin .
tlin supports a configuration file (.tlin.yaml
) to customize its behavior. You can generate a default configuration file by running:
tlin -init
This command will create a .tlin.yaml
file in the current directory with the following content:
# .tlin.yaml
name: tlin
rules:
You can customize the configuration file to enable or disable specific lint rules, set cyclomatic complexity thresholds, and more.
# .tlin.yaml
name: tlin
rules:
useless-break:
severity: WARNING
deprecated-function:
severity: OFF
tlin supports several flags to customize its behavior:
-timeout <duration>
: Set a timeout for the linter (default: 5m). Example:-timeout 1m30s
-cyclo
: Run cyclomatic complexity analysis-threshold <int>
: Set cyclomatic complexity threshold (default: 10)-ignore <rules>
: Comma-separated list of lint rules to ignore-ignore-paths <paths>
: Comma-separated list of paths to ignore-cfg
: Run control flow graph analysis-func <name>
: Specify function name for CFG analysis-fix
: Automatically fix issues-dry-run
: Run in dry-run mode (show fixes without applying them)-confidence <float>
: Set confidence threshold for auto-fixing (0.0 to 1.0, default: 0.75)-o <path>
: Write output to a file instead of stdout-json-output
: Output results in JSON format-init
: Initialize a new tlin configuration file in the current directory-c <path>
: Specify a custom configuration file
For detailed contribution guidelines, please refer to CONTRIBUTING.md. We welcome all forms of contributions, including bug reports, feature requests, and pull requests.
- @GodDrinkTeJAVA - Project name (
tlin
) suggestion
This project is distributed under the MIT License. See LICENSE
for more information.