Giter Site home page Giter Site logo

gocmt's Introduction

gocmt - Add missing comment on exported function, method, type, constant, variable in go file

Build status Go Reference Go Report Card

Installation

For go1.15 and below:

go get -u github.com/cuonglm/gocmt

For go1.16 and above:

go install github.com/cuonglm/gocmt@latest

Why gocmt

Some of my projects have many files with exported fields, variables, functions missing comment, so lint tools will complain.

I find a way to auto add missing comment to them, just to pass the lint tools but nothing existed.

So gocmt comes in.

Usage

$ gocmt -h
usage: gocmt [flags] [file ...]
  -d string
    	Directory to process
  -i	Make in-place editing
  -t string
    	Comment template (default "...")

Example

$ cat testdata/main.go
package p

var i = 0

var I = 1

var c = "constant un-exported"

const C = "constant exported"

type t struct{}

type T struct{}

func main() {
}

func unexport(s string) {
}
func Export(s string) {
}

func ExportWithComment(s string) {
}

Using gocmt give you:

$ gocmt testdata/main.go
package p

var i = 0

// I ...
var I = 1

var c = "constant un-exported"

// C ...
const C = "constant exported"

type t struct{}

// T ...
type T struct{}

func main() {
}

func unexport(s string) {
}
// Export ...
func Export(s string) {
}

// ExportWithComment ...
func ExportWithComment(s string) {
}

Default template is ..., you can change it using -t option.

Author

Cuong Manh Le [email protected]

License

See LICENSE

gocmt's People

Contributors

bin-huang avatar cuonglm avatar lirao avatar mwlazlo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

gocmt's Issues

Ignore vendor folders

gocmt -d . -i also modifies vendored folders.

The default behaviour should be to ignore it, since you almost never want your vendored packages to be modified.

feat: support go 1.20, or go 1.18 at least

Go 1.18 introduced generics, and gocmt can not handle the generics things.

Based on my testing, updating the Go version resolves issues with the AST parser and allows it to function correctly.

[BUG] incorrect comments when an exported var defined in a func

Produce steps:

  1. create a main.go in foo directory:
package p

import "log"

// I ...
var I = 1

func a() {

        // LogAll ... 
	var LogAll map[string]struct{}
	log.Println(LogAll)
}
  1. run gocmt -d foo -i

Result:

$ cat foo/main.go
package p

import "log"

// I ...
var I = 1

func a() {

	// LogAll ...
	// LogAll ...
	var LogAll map[string]struct{}
	log.Println(LogAll)
}

golint has update the rule, is there any plan for support it?

now, the method need prefix for golint, is there any plan for support it? such as:

go lint report

gorose/orm.go
Line 81: warning: comment on exported method Orm.Table should be of the form "Table ..." (golint)

orm.go source code

func (dba *Orm) Table(tab interface{}) IOrm {
	dba.GetISession().Bind(tab)
	//dba.table = dba.GetISession().GetTableName()
	return dba
}

this need the comment like // Orm.Table ..., not // Table ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.