maintidx
measures the maintainability index of each function.
Here for more information about this package.(Sorry, japanese only)
The maintainability index is an index that measures the maintainability of source code.
The coefficients include cyclomatic complexity, halstead volume, and line of code.
This library used the rebased value provided by Microsoft.
The maintainability index is an experimental value, so don't expect too much from it, but the cyclomatic complexity used as a coefficient was found to be closely related to the number of times the code was edited.
go get -u github.com/yagipy/maintidx/cmd/maintidx@v1.0.0
go install github.com/yagipy/maintidx/cmd/maintidx@v1.0.0
maintidx ./...
with golangci-lint
- Install golangci-lint
- Execute the following
golangci-lint run --disable-all -E maintidx
It's also available to use .golangci.yml
# Add maintidx to enable linters.
linters:
enable:
- maintidx
linters-settings:
maintidx:
# Show functions with maintainability index lower than N.
# A high index indicates better maintainability (it's kind of the opposite of complexity).
# Default: 20
under: 100
Execute using .golangci.yml
golangci-lint run
go run github.com/yagipy/maintidx/cmd/maintidx ./...
go vet -vettool=`which maintidx` ./...
Flags:
-under int
show functions with maintainability index < N only. (default 20)