Skip to content

Commit

Permalink
feat: create 0-cautious
Browse files Browse the repository at this point in the history
add depguard to maintain the dependencies
  • Loading branch information
ccoVeille committed Jan 14, 2025
1 parent dabf986 commit 051bb2f
Show file tree
Hide file tree
Showing 3 changed files with 401 additions and 0 deletions.
254 changes: 254 additions & 0 deletions 10-cautious/.golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,254 @@
---
# golangci-lint configuration file made by @ccoVeille
# Source: https://github.com/ccoVeille/golangci-lint-config-examples/
# Author: @ccoVeille
# License: MIT
# Variant: 10-cautious
# Version: v1.2.0
#
linters:
# some linters are enabled by default
# https://golangci-lint.run/usage/linters/
#
# enable some extra linters
enable:
# Errcheck is a program for checking for unchecked errors in Go code.
- errcheck

# Linter for Go source code that specializes in simplifying code.
- gosimple

# Vet examines Go source code and reports suspicious constructs.
- govet

# Detects when assignments to existing variables are not used.
- ineffassign

# It's a set of rules from staticcheck. See https://staticcheck.io/
- staticcheck

# Fast, configurable, extensible, flexible, and beautiful linter for Go.
# Drop-in replacement of golint.
- revive

# check imports order and makes it always deterministic.
- gci

# make sure to use t.Helper() when needed
- thelper

# mirror suggests rewrites to avoid unnecessary []byte/string conversion
- mirror

# detect the possibility to use variables/constants from the Go standard library.
- usestdlibvars

# Finds commonly misspelled English words.
- misspell

# Checks for duplicate words in the source code.
- dupword

# linter to detect errors invalid key values count
- loggercheck

# detects nested contexts in loops or function literals
- fatcontext

# checks if package imports are in a list of acceptable packages.
- depguard

linters-settings:
gci: # define the section orders for imports
sections:
# Standard section: captures all standard packages.
- standard
# Default section: catchall that is not standard or custom
- default
# linters that related to local tool, so they should be separated
- localmodule

revive:
rules:
# Check for commonly mistaken usages of the sync/atomic package
- name: atomic

# Blank import should be only in a main or test package, or have a comment justifying it.
- name: blank-imports

# Spots comments not starting with a space
- name: comment-spacings

# context.Context() should be the first parameter of a function when provided as argument.
- name: context-as-argument
arguments:
- allowTypesBefore: "*testing.T"

# Basic types should not be used as a key in `context.WithValue`
- name: context-keys-type

# warns on some common mistakes when using defer statement.
- name: defer

# Importing with `.` makes the programs much harder to understand
- name: dot-imports

# suggest to simplify if-then-else constructions when possible
- name: early-return

# Empty blocks make code less readable and could be a symptom of a bug or unfinished refactoring.
- name: empty-block

# for better readability, variables of type `error` must be named with the prefix `err`.
- name: error-naming

# for better readability, the errors should be last in the list of returned values by a function.
- name: error-return

# for better readability, error messages should not be capitalized or end with punctuation or a newline.
- name: error-strings

# report when replacing `errors.New(fmt.Sprintf())` with `fmt.Errorf()` is possible
- name: errorf

# Checking if an error is nil to just after return the error or nil is redundant.
- name: if-return

# incrementing an integer variable by 1 is recommended to be done using the `++` operator
- name: increment-decrement

# highlights redundant else-blocks that can be eliminated from the code
- name: indent-error-flow

# This rule suggests a shorter way of writing ranges that do not use the second value.
- name: range

# receiver names in a method should reflect the struct name (p for Person, for example)
- name: receiver-naming

# redefining built in names (true, false, append, make) can lead to bugs very difficult to detect.
- name: redefines-builtin-id

# redundant else-blocks that can be eliminated from the code.
- name: superfluous-else

# prevent confusing name for variables when using `time` package
- name: time-naming

# warns when an exported function or method returns a value of an un-exported type.
- name: unexported-return

# spots and proposes to remove unreachable code. also helps to spot errors
- name: unreachable-code

# Functions or methods with unused parameters can be a symptom of an unfinished refactoring or a bug.
- name: unused-parameter

# warns on useless break statements in case clauses of switch and select statements
- name: useless-break

# report when a variable declaration can be simplified
- name: var-declaration

# warns when initialism, variable or package naming conventions are not followed.
- name: var-naming

depguard:
rules:
obsolete:
deny:
- pkg: "golang.org/x/net/context"
desc: "Should be replaced by standard lib context package (Go 1.7+)"

- pkg: "github.com/pkg/errors"
desc: "Should be replaced by standard lib errors package (Go 1.13+)"

- pkg: "golang.org/x/xerrors"
desc: "Should be replaced by standard lib errors package (Go 1.13+)"

- pkg: github.com/go-errors/errors
desc: "Should be replaced by standard lib errors package"

- pkg: "io/ioutil"
desc: "Should be replaced by standard lib os package (Go 1.16+)"

- pkg: "golang.org/x/exp/slices"
desc: "Should be replaced by slices (Go 1.21+)"

- pkg: "golang.org/x/exp/maps"
desc: "Should be replaced by standard lib maps package (Go 1.21+)"

- pkg: "math/rand$"
desc: "Should be replaced by standard lib math/rand/v2 package (Go 1.23+)"

- pkg: "golang.org/x/syscall"
desc: "Should be replaced by golang.org/x/sys or os package according to Go maintainers. More information: https://golang.org/s/go1.4-syscall"

- pkg: "golang.org/x/crypto/ed25519"
desc: "Should be replaced by standard lib crypto/ed25519 package"

- pkg: "golang.org/x/exp/constraints"
desc: "Should be replaced by standard lib cmp package (Go 1.21+)"

- pkg: "github.com/golang/protobuf"
desc: "Should be replaced by google.golang.org/protobuf package (github.com/golang/protobuf is deprecated)"

- pkg: "github.com/gogo/protobuf"
desc: "Should be replaced by google.golang.org/protobuf package (github.com/gogo/protobuf is deprecated)"

- pkg: "github.com/golang/protobuf/proto"
desc: "Should be replaced by google.golang.org/protobuf/proto package (github.com/golang/protobuf/proto is deprecated)"

- pkg: "github.com/gogo/status"
desc: "Should be replaced by google.golang.org/grpc/status package (github.com/gogo/status is deprecated)"

logs:
deny:
- pkg: "github.com/prometheus/common/log"
desc: "Could be replaced by standard lib log/slog package"

- pkg: "github.com/sirupsen/logrus"
desc: "Should be replaced by standard lib log/slog package"

- pkg: github.com/siddontang/go-log/log
desc: "Could be replaced by standard lib log/slog package"

- pkg: github.com/siddontang/go/log
desc: "Could be replaced by standard lib log/slog package"

- pkg: github.com/mailgun/log
desc: "Could be replaced by standard lib log/slog package"

- pkg: github.com/saferwall/pe/log
desc: "Could be replaced by standard lib log/slog package"

recommended:
deny:
- pkg: "go.uber.org/atomic"
desc: "Could be replaced by standard lib sync/atomic package"

- pkg: "github.com/hashicorp/go-multierror"
desc: "Could be replaced by errors.Join (Go 1.20+)"

dupword:
# Keywords used to ignore detection.
# Default: []
ignore: []
# - "blah" # this will accept "blah blah …" as a valid duplicate word

misspell:
# Correct spellings using locale preferences for US or UK.
# Setting locale to US will correct the British spelling of 'colour' to 'color'.
# Default ("") is to use a neutral variety of English.
locale: US

# List of words to ignore
# among the one defined in https://github.com/golangci/misspell/blob/master/words.go
ignore-words: []
# - valor
# - and

# Extra word corrections.
extra-words: []
# - typo: "whattever"
# correction: "whatever"
Loading

0 comments on commit 051bb2f

Please sign in to comment.