[v15.0/forgejo]: chore: add modernizer linter (#11949)

**Backport: !11936**

- Go has a suite of small linters that helps with modernizing Go code by using newer functions and catching small mistakes, https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/modernize.
- Enable this linter in golangci-lint.
- There's also [`go fix`](https://go.dev/blog/gofix), which is not yet released as a linter in golangci-lint: https://github.com/golangci/golangci-lint/pull/6385

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/11949
Reviewed-by: Mathieu Fenniak <mfenniak@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
This commit is contained in:
Gusted 2026-04-02 16:54:46 +02:00 committed by Mathieu Fenniak
parent a32804bebe
commit 607d031069
247 changed files with 650 additions and 1001 deletions

View file

@ -10,6 +10,7 @@ import (
"fmt"
"net/http"
"net/url"
"slices"
"strings"
issues_model "forgejo.org/models/issues"
@ -466,13 +467,7 @@ func (ctx *APIContext) IsUserRepoAdmin() bool {
// IsUserRepoWriter returns true if current user has write privilege in current repo
func (ctx *APIContext) IsUserRepoWriter(unitTypes []unit.Type) bool {
for _, unitType := range unitTypes {
if ctx.Repo.CanWrite(unitType) {
return true
}
}
return false
return slices.ContainsFunc(unitTypes, ctx.Repo.CanWrite)
}
// Returns true when the requests indicates that it accepts a Github response.

View file

@ -4,6 +4,8 @@
package context
import (
"slices"
"forgejo.org/models/unit"
)
@ -19,11 +21,5 @@ func (ctx *Context) IsUserRepoAdmin() bool {
// IsUserRepoWriter returns true if current user has write privilege in current repo
func (ctx *Context) IsUserRepoWriter(unitTypes []unit.Type) bool {
for _, unitType := range unitTypes {
if ctx.Repo.CanWrite(unitType) {
return true
}
}
return false
return slices.ContainsFunc(unitTypes, ctx.Repo.CanWrite)
}

View file

@ -5,6 +5,7 @@ package context
import (
"net/http"
"slices"
auth_model "forgejo.org/models/auth"
"forgejo.org/models/perm"
@ -47,10 +48,8 @@ func CanEnableEditor() func(ctx *Context) {
// RequireRepoWriterOr returns a middleware for requiring repository write to one of the unit permission
func RequireRepoWriterOr(unitTypes ...unit.Type) func(ctx *Context) {
return func(ctx *Context) {
for _, unitType := range unitTypes {
if ctx.Repo.CanWrite(unitType) {
return
}
if slices.ContainsFunc(unitTypes, ctx.Repo.CanWrite) {
return
}
ctx.NotFound(ctx.Req.URL.RequestURI(), nil)
}
@ -85,10 +84,8 @@ func RequireRepoReader(unitType unit.Type) func(ctx *Context) {
// RequireRepoReaderOr returns a middleware for requiring repository write to one of the unit permission
func RequireRepoReaderOr(unitTypes ...unit.Type) func(ctx *Context) {
return func(ctx *Context) {
for _, unitType := range unitTypes {
if ctx.Repo.CanRead(unitType) {
return
}
if slices.ContainsFunc(unitTypes, ctx.Repo.CanRead) {
return
}
if log.IsTrace() {
var format string

View file

@ -395,14 +395,14 @@ func repoAssignment(ctx *Context, repo *repo_model.Repository) {
followingRepoList, err := repo_model.FindFollowingReposByRepoID(ctx, repo.ID)
if err == nil {
followingRepoString := ""
var followingRepoString strings.Builder
for idx, followingRepo := range followingRepoList {
if idx > 0 {
followingRepoString += ";"
followingRepoString.WriteString(";")
}
followingRepoString += followingRepo.URI
followingRepoString.WriteString(followingRepo.URI)
}
ctx.Data["FollowingRepos"] = followingRepoString
ctx.Data["FollowingRepos"] = followingRepoString.String()
} else if err != repo_model.ErrMirrorNotExist {
ctx.ServerError("FindFollowingRepoByRepoID", err)
return

View file

@ -38,7 +38,7 @@ func Verify(buf []byte, fileName, allowedTypesStr string) error {
allowedTypesStr = strings.ReplaceAll(allowedTypesStr, "|", ",") // compat for old config format
allowedTypes := []string{}
for _, entry := range strings.Split(allowedTypesStr, ",") {
for entry := range strings.SplitSeq(allowedTypesStr, ",") {
entry = strings.ToLower(strings.TrimSpace(entry))
if entry != "" {
allowedTypes = append(allowedTypes, entry)