go-exhaustruct

module
v2.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 15, 2022 License: MIT

README

exhaustruct


exhaustruct is a golang analyzer that finds structures with uninitialized fields

The "why?"

There is a similar linter exhaustivestruct, but it is abandoned and not optimal.

This linter can be called a successor of exhaustivestruct, and:

  • it is at least 2.5+ times faster, due to better algorithm;
  • can receive include and/or exclude patterns;
  • allows to mark fields as optional (not required to be filled on struct init), via field tag exhaustruct:"optional";
  • expects received patterns to be RegExp, therefore this package is not api-compatible with exhaustivestruct.
Installation
go get -u github.com/GaijinEntertainment/go-exhaustruct/cmd/exhaustruct
Usage
exhaustruct [-flag] [package]

Flags:
  -i value
        Regular expression to match struct packages and names, can receive multiple flags
  -e value
        Regular expression to exclude struct packages and names, can receive multiple flags
Example
// Package a.go
package a

type Shape struct {
	Length int
	Width  int

	volume int
	Perimeter int `exhaustruct:"optional"`
}

// valid
var a Shape = Shape{
	Length: 5,
	Width:  3,
	volume: 5,
}

// invalid, `volume` is missing
var b Shape = Shape{
	Length: 5,
	Width:  3,
}

// Package b.go
package b

import "a"

// valid
var b Shape = a.Shape{
	Length: 5,
	Width:  3,
}

// invalid, `Width` is missing
var b Shape = a.Shape{
	Length: 5,
}

Directories

Path Synopsis
cmd
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL