diff --git a/.golangci.yaml b/.golangci.yaml index 3dbe66cdf8..3c0ae8f5b2 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -49,7 +49,6 @@ linters: - gofumpt # TODO: consider enabling the 'gofumpt' linter to check whether code was gofumpt-ed. - godox # TODO: consider enabling the 'godox' linter to detect FIXME, TODO and other comment keywords. - godot # TODO: consider enabling the 'godot' linter to if comments end in a period. - - gocritic # TODO: consider enabling the 'gocritic' linter to check for bugs, performance and style issues. - goconst # TODO: consider enabling the 'goconst' linter to find repeated strings that could be replaced by a constant. - gocognit # TODO: consider enabling the 'gocognit' linter to compute and check the cognitive complexity of functions. - gochecknoinits # TODO: consider enabling the 'gochecknoinits' linter to check that no init functions are present in Go code. diff --git a/changelog/unreleased/enhancement-gocritic.md b/changelog/unreleased/enhancement-gocritic.md new file mode 100644 index 0000000000..d57336b4d8 --- /dev/null +++ b/changelog/unreleased/enhancement-gocritic.md @@ -0,0 +1,3 @@ +Enhancement: Enable gocritic linter in golangci-lint and solve issues + +https://github.com/cs3org/reva/pull/3467 \ No newline at end of file diff --git a/internal/grpc/interceptors/eventsmiddleware/events.go b/internal/grpc/interceptors/eventsmiddleware/events.go index d3a37d253d..7d8067218d 100644 --- a/internal/grpc/interceptors/eventsmiddleware/events.go +++ b/internal/grpc/interceptors/eventsmiddleware/events.go @@ -43,7 +43,7 @@ func init() { // NewUnary returns a new unary interceptor that emits events when needed // no lint because of the switch statement that should be extendable // -//nolint:gocritic + func NewUnary(m map[string]interface{}) (grpc.UnaryServerInterceptor, int, error) { publisher, err := publisherFromConfig(m) if err != nil { @@ -57,7 +57,9 @@ func NewUnary(m map[string]interface{}) (grpc.UnaryServerInterceptor, int, error } var ev interface{} - switch v := res.(type) { + + // gocritic is disabled because the use of .(type) outside type switch is forbidden + switch v := res.(type) { //nolint:gocritic case *collaboration.CreateShareResponse: ev = ShareCreated(v) } diff --git a/pkg/storage/fs/owncloud/owncloud.go b/pkg/storage/fs/owncloud/owncloud.go index 5220158164..000c78e990 100644 --- a/pkg/storage/fs/owncloud/owncloud.go +++ b/pkg/storage/fs/owncloud/owncloud.go @@ -292,7 +292,7 @@ func (fs *ocfs) toInternalPath(ctx context.Context, sp string) (ip string) { ip = filepath.Join(fs.c.DataDirectory, layout, "files") } else { // parts = "", "foo/bar.txt" - ip = filepath.Join(fs.c.DataDirectory, layout, "files", filepath.Join(segments[1])) + ip = filepath.Join(fs.c.DataDirectory, layout, "files", segments[1]) } } @@ -2349,7 +2349,7 @@ func (fs *ocfs) propagate(ctx context.Context, leafPath string) error { Int("i", i). Interface("parts", parts). Msg("propagating change") - if err := os.Chtimes(filepath.Join(root), fi.ModTime(), fi.ModTime()); err != nil { + if err := os.Chtimes(root, fi.ModTime(), fi.ModTime()); err != nil { appctx.GetLogger(ctx).Error(). Err(err). Str("leafPath", leafPath). diff --git a/pkg/storage/fs/owncloudsql/owncloudsql.go b/pkg/storage/fs/owncloudsql/owncloudsql.go index a445e3b83f..ed4d9fc9d7 100644 --- a/pkg/storage/fs/owncloudsql/owncloudsql.go +++ b/pkg/storage/fs/owncloudsql/owncloudsql.go @@ -1906,12 +1906,12 @@ func (fs *owncloudsqlfs) propagate(ctx context.Context, leafPath string) error { Str("leafPath", leafPath). Str("currentPath", currentPath). Msg("propagating change") - parentFi, err := os.Stat(filepath.Join(currentPath)) + parentFi, err := os.Stat(currentPath) if err != nil { return err } if fi.ModTime().UnixNano() > parentFi.ModTime().UnixNano() { - if err := os.Chtimes(filepath.Join(currentPath), fi.ModTime(), fi.ModTime()); err != nil { + if err := os.Chtimes(currentPath, fi.ModTime(), fi.ModTime()); err != nil { appctx.GetLogger(ctx).Error(). Err(err). Str("leafPath", leafPath). @@ -1920,7 +1920,7 @@ func (fs *owncloudsqlfs) propagate(ctx context.Context, leafPath string) error { return err } } - fi, err = os.Stat(filepath.Join(currentPath)) + fi, err = os.Stat(currentPath) if err != nil { return err } diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 1c0f43d2cb..539acf5b57 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -39,6 +39,8 @@ import ( types "github.com/cs3org/go-cs3apis/cs3/types/v1beta1" "github.com/cs3org/reva/pkg/registry" "github.com/cs3org/reva/pkg/registry/memory" + + // gocritic is disabled because google.golang.org/protobuf/proto does not provide a method to convert MessageV1 to MessageV2 "github.com/golang/protobuf/proto" //nolint:staticcheck "google.golang.org/protobuf/encoding/protojson" )