Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

example linter that can be used as a plugin for github.com/golangci/golangci-lint

NotificationsYou must be signed in to change notification settings

dbraley/example-linter

Repository files navigation

This is an example linter that can be compiled into a plugin forgolangci-lint.

To use this:

  1. Download the source code *
  2. From the root project directory, rungo build -buildmode=plugin plugin/example.go.
  3. Copy the generatedexample.so file into your project or to some other known location of your choosing. **

Create a Copy ofgolangci-lint that Can Run with Plugins

In order to use plugins, you'll need a golangci-lint executable that can run them. Plugin dependencies defined in thego.mod file MUST have a matching version (or hash) as the same dependency in thgolangci-lint binary if thedependency is used in both. Because of the high probability of this both using the same dependency, it is recommendedto use a locally built binary. To do so:

  1. Downloadgolangci-lint source code
  2. From the projects root directory, runmake
  3. Copy thegolangci-lint executable that was created to your path, project, or other location

Configure Your Project for Linting

If you already have a linter plugin available, you can follow these steps to define its usage in a projects.golangci.yml file. If you're looking for instructions on how to configure your own custom linter, they can be foundfurther down.

  1. If the project you want to lint does not have one already, copy the.golangci.ymlto the root directory.
  2. Adjust the yaml to appropriatelinters-settings:custom entries as so:
linters-settings: custom:  example:   path: /example.so   description: The description of the linter   original-url: github.com/golangci/example-linter

That is all the configuration that is required to run a custom linter in your project. Custom linters are enabled by default,but abide by the same rules as other linters. If the disable all option is specified either on command line or in.golang.yml fileslinters:disable-all: true, custom linters will be disabled; they can be re-enabled by adding themto thelinters:enable list, or providing the enabled option on the command line,golangci-lint run -Eexample.

To Create Your Own Custom Linter

Your linter must implement one or moregolang.org/x/tools/go/analysis.Analyzer structs.Your project should also usego.mod. All versions of libraries that overlapgolangci-lint (including replacedlibraries) MUST be set to the same version asgolangci-lint. You can see the versions by runninggo version -m golangci-lint.

You'll also need to create a go file likeplugin/example.go. This MUST be in the packagemain, and define avariable of nameAnalyzerPlugin. TheAnalyzerPlugin instance MUST implement the following interface:

type AnalyzerPlugin interface {    GetAnalyzers() []*analysis.Analyzer}

The type ofAnalyzerPlugin is not important, but is by conventiontype analyzerPlugin struct {}. Seeplugin/example.go for more info.

To build the plugin, from the root project directory, rungo build -buildmode=plugin plugin/example.go. This will create a plugin*.sofile that can be copied into your project or another well known location for usage in golangci-lint.

* Sorry, I haven't found a way to enablego get functionality for plugins yet. If you know how, let me know!

** Alternately, you can use the-o /path/to/location/example.so output flag to have it put it there for you.

About

example linter that can be used as a plugin for github.com/golangci/golangci-lint

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors2

  •  
  •  

Languages


[8]ページ先頭

©2009-2025 Movatter.jp