浏览代码

ci: use new lint action and add custom config (#6562)

ᴜɴᴋɴᴡᴏɴ 3 年之前
父节点
当前提交
1a1a01a842

+ 15 - 11
.github/workflows/go.yml

@@ -7,10 +7,13 @@ on:
     paths:
       - '**.go'
       - 'go.mod'
+      - '.golangci.yml'
+      - '.github/workflows/go.yml'
   pull_request:
     paths:
       - '**.go'
       - 'go.mod'
+      - '.golangci.yml'
       - '.github/workflows/go.yml'
 env:
   GOPROXY: "https://proxy.golang.org"
@@ -22,31 +25,25 @@ jobs:
     steps:
       - uses: actions/checkout@v2
       - name: Run golangci-lint
-        uses: actions-contrib/golangci-lint@v1
+        uses: golangci/golangci-lint-action@v2
         with:
-          args: 'run --timeout=30m'
+          version: latest
+          args: --timeout=30m
 
   test:
     name: Test
     strategy:
       matrix:
-        go-version: [1.14.x, 1.15.x]
+        go-version: [1.14.x, 1.15.x, 1.16.x]
         platform: [ubuntu-latest, macos-latest, windows-latest]
     runs-on: ${{ matrix.platform }}
     steps:
       - name: Install Go
-        uses: actions/setup-go@v1
+        uses: actions/setup-go@v2
         with:
           go-version: ${{ matrix.go-version }}
       - name: Checkout code
         uses: actions/checkout@v2
-      - name: Run unit tests
-        run: go test -v -race -coverprofile=coverage -covermode=atomic ./...
-      - name: Upload coverage report to Codecov
-        uses: codecov/codecov-action@v1.0.6
-        with:
-          file: ./coverage
-          flags: unittests
       - name: Cache downloaded modules
         uses: actions/cache@v1
         with:
@@ -54,4 +51,11 @@ jobs:
           key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
           restore-keys: |
             ${{ runner.os }}-go-
+      - name: Run unit tests
+        run: go test -v -race -coverprofile=coverage -covermode=atomic ./...
+      - name: Upload coverage report to Codecov
+        uses: codecov/codecov-action@v1.5.0
+        with:
+          file: ./coverage
+          flags: unittests
 

+ 21 - 0
.golangci.yml

@@ -0,0 +1,21 @@
+linters-settings:
+  nakedret:
+    max-func-lines: 0 # Disallow any unnamed return statement
+
+linters:
+  enable:
+    - deadcode
+    - errcheck
+    - gosimple
+    - govet
+    - ineffassign
+    - staticcheck
+    - structcheck
+    - typecheck
+    - unused
+    - varcheck
+    - nakedret
+    - gofmt
+    - rowserrcheck
+    - unconvert
+    - goimports

+ 1 - 1
docker/s6/crond/run

@@ -3,7 +3,7 @@
 # The default configuration is also calling all the scripts in /etc/periodic/${period}
 
 if test -f ./setup; then
-    # shellcheck disable=SC2039,SC1091
+    # shellcheck disable=SC2039,SC1091,SC3046
     source ./setup
 fi
 

+ 1 - 1
docker/s6/gogs/run

@@ -1,7 +1,7 @@
 #!/bin/sh
 
 if test -f ./setup; then
-    # shellcheck disable=SC2039,SC1091
+    # shellcheck disable=SC2039,SC1091,SC3046
     source ./setup
 fi
 

+ 1 - 1
docker/s6/openssh/run

@@ -1,7 +1,7 @@
 #!/bin/sh
 
 if test -f ./setup; then
-    # shellcheck disable=SC2039,SC1091
+    # shellcheck disable=SC2039,SC1091,SC3046
     source ./setup
 fi
 

+ 1 - 1
docker/s6/syslogd/run

@@ -1,7 +1,7 @@
 #!/bin/sh
 
 if test -f ./setup; then
-    # shellcheck disable=SC2039,SC1091
+    # shellcheck disable=SC2039,SC1091,SC3046
     source ./setup
 fi
 

+ 3 - 3
docker/start.sh

@@ -12,7 +12,7 @@ create_socat_links() {
             SERV_FOLDER=/app/gogs/docker/s6/SOCAT_${NAME}_${PORT}
             mkdir -p "${SERV_FOLDER}"
             CMD="socat -ls TCP4-LISTEN:${PORT},fork,reuseaddr TCP4:${ADDR}:${PORT}"
-            # shellcheck disable=SC2039
+            # shellcheck disable=SC2039,SC3037
             echo -e "#!/bin/sh\nexec $CMD" > "${SERV_FOLDER}"/run
             chmod +x "${SERV_FOLDER}"/run
             USED_PORT="${USED_PORT}:${PORT}"
@@ -24,7 +24,7 @@ EOT
 }
 
 cleanup() {
-    # Cleanup SOCAT services and s6 event folder
+    # Cleanup SOCAT services and s6 event folder
     # On start and on shutdown in case container has been killed
     rm -rf "$(find /app/gogs/docker/s6/ -name 'event')"
     rm -rf /app/gogs/docker/s6/SOCAT_*
@@ -67,7 +67,7 @@ if [ "$CROND" = "true" ] || [ "$CROND" = "1" ]; then
     rm -f /app/gogs/docker/s6/crond/down
     /bin/sh /app/gogs/docker/runtime/backup-init.sh "${PUID}"
 else
-    # Tell s6 not to run the crond service
+    # Tell s6 not to run the crond service
     touch /app/gogs/docker/s6/crond/down
 fi
 

+ 1 - 1
internal/cron/cron.go

@@ -11,8 +11,8 @@ import (
 
 	"github.com/gogs/cron"
 
-	"gogs.io/gogs/internal/db"
 	"gogs.io/gogs/internal/conf"
+	"gogs.io/gogs/internal/db"
 )
 
 var c = cron.New()

+ 1 - 1
internal/db/action.go

@@ -11,7 +11,7 @@ import (
 	"time"
 	"unicode"
 
-	"github.com/json-iterator/go"
+	jsoniter "github.com/json-iterator/go"
 	"github.com/unknwon/com"
 	log "unknwon.dev/clog/v2"
 	"xorm.io/xorm"

+ 1 - 1
internal/db/models.go

@@ -227,7 +227,7 @@ func GetStatistic() (stats Statistic) {
 	stats.Counter.HookTask, _ = x.Count(new(HookTask))
 	stats.Counter.Team, _ = x.Count(new(Team))
 	stats.Counter.Attachment, _ = x.Count(new(Attachment))
-	return
+	return stats
 }
 
 func Ping() error {

+ 1 - 1
internal/db/ssh_key.go

@@ -221,7 +221,7 @@ func SSHKeyGenParsePublicKey(key string) (string, int, error) {
 func SSHNativeParsePublicKey(keyLine string) (string, int, error) {
 	fields := strings.Fields(keyLine)
 	if len(fields) < 2 {
-		return "", 0, fmt.Errorf("not enough fields in public key line: %s", string(keyLine))
+		return "", 0, fmt.Errorf("not enough fields in public key line: %s", keyLine)
 	}
 
 	raw, err := base64.StdEncoding.DecodeString(fields[1])

+ 1 - 1
internal/db/webhook.go

@@ -14,7 +14,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/json-iterator/go"
+	jsoniter "github.com/json-iterator/go"
 	gouuid "github.com/satori/go.uuid"
 	log "unknwon.dev/clog/v2"
 	"xorm.io/xorm"

+ 1 - 1
internal/db/webhook_dingtalk.go

@@ -8,7 +8,7 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/json-iterator/go"
+	jsoniter "github.com/json-iterator/go"
 
 	"github.com/gogs/git-module"
 	api "github.com/gogs/go-gogs-client"

+ 1 - 1
internal/db/webhook_discord.go

@@ -9,7 +9,7 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/json-iterator/go"
+	jsoniter "github.com/json-iterator/go"
 
 	"github.com/gogs/git-module"
 	api "github.com/gogs/go-gogs-client"

+ 1 - 1
internal/db/webhook_slack.go

@@ -8,7 +8,7 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/json-iterator/go"
+	jsoniter "github.com/json-iterator/go"
 
 	"github.com/gogs/git-module"
 	api "github.com/gogs/go-gogs-client"

+ 1 - 1
internal/httplib/httplib.go

@@ -24,7 +24,7 @@ import (
 	"sync"
 	"time"
 
-	"github.com/json-iterator/go"
+	jsoniter "github.com/json-iterator/go"
 )
 
 var defaultSetting = Settings{false, "GogsServer", 60 * time.Second, 60 * time.Second, nil, nil, nil, false}

+ 1 - 1
internal/markup/markup.go

@@ -216,7 +216,7 @@ func wrapImgWithLink(urlPrefix string, buf *bytes.Buffer, token html.Token) {
 	buf.WriteString(`">`)
 
 	if needPrepend {
-		src = strings.Replace(urlPrefix+string(src), " ", "%20", -1)
+		src = strings.Replace(urlPrefix+src, " ", "%20", -1)
 		buf.WriteString(`<img src="`)
 		buf.WriteString(src)
 		buf.WriteString(`"`)

+ 1 - 1
internal/markup/sanitizer.go

@@ -9,8 +9,8 @@ import (
 
 	"github.com/microcosm-cc/bluemonday"
 
-	"gogs.io/gogs/internal/lazyregexp"
 	"gogs.io/gogs/internal/conf"
+	"gogs.io/gogs/internal/lazyregexp"
 )
 
 // Sanitizer is a protection wrapper of *bluemonday.Policy which does not allow

+ 1 - 1
internal/route/admin/admin.go

@@ -10,7 +10,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/json-iterator/go"
+	jsoniter "github.com/json-iterator/go"
 
 	"gogs.io/gogs/internal/conf"
 	"gogs.io/gogs/internal/context"

+ 1 - 1
internal/route/admin/notice.go

@@ -64,7 +64,7 @@ func DeleteNotices(c *context.Context) {
 
 func EmptyNotices(c *context.Context) {
 	if err := db.DeleteNotices(0, 0); err != nil {
-		c.Error(err,"delete notices")
+		c.Error(err, "delete notices")
 		return
 	}
 

+ 1 - 1
internal/route/admin/orgs.go

@@ -5,10 +5,10 @@
 package admin
 
 import (
+	"gogs.io/gogs/internal/conf"
 	"gogs.io/gogs/internal/context"
 	"gogs.io/gogs/internal/db"
 	"gogs.io/gogs/internal/route"
-	"gogs.io/gogs/internal/conf"
 )
 
 const (

+ 2 - 2
internal/route/api/v1/repo/branch.go

@@ -25,7 +25,7 @@ func GetBranch(c *context.APIContext) {
 		return
 	}
 
-	c.JSONSuccess( convert.ToBranch(branch, commit))
+	c.JSONSuccess(convert.ToBranch(branch, commit))
 }
 
 // https://github.com/gogs/go-gogs-client/wiki/Repositories#list-branches
@@ -46,5 +46,5 @@ func ListBranches(c *context.APIContext) {
 		apiBranches[i] = convert.ToBranch(branches[i], commit)
 	}
 
-	c.JSONSuccess( &apiBranches)
+	c.JSONSuccess(&apiBranches)
 }

+ 3 - 2
internal/route/api/v1/repo/hook.go

@@ -7,11 +7,12 @@ package repo
 import (
 	"net/http"
 
-	api "github.com/gogs/go-gogs-client"
-	"github.com/json-iterator/go"
+	jsoniter "github.com/json-iterator/go"
 	"github.com/pkg/errors"
 	"github.com/unknwon/com"
 
+	api "github.com/gogs/go-gogs-client"
+
 	"gogs.io/gogs/internal/context"
 	"gogs.io/gogs/internal/db"
 	"gogs.io/gogs/internal/route/api/v1/convert"

+ 2 - 2
internal/route/repo/branch.go

@@ -91,7 +91,7 @@ func Branches(c *context.Context) {
 
 	c.Data["ActiveBranches"] = activeBranches
 	c.Data["StaleBranches"] = staleBranches
-	c.Success( BRANCHES_OVERVIEW)
+	c.Success(BRANCHES_OVERVIEW)
 }
 
 func AllBranches(c *context.Context) {
@@ -104,7 +104,7 @@ func AllBranches(c *context.Context) {
 	}
 	c.Data["Branches"] = branches
 
-	c.Success( BRANCHES_ALL)
+	c.Success(BRANCHES_ALL)
 }
 
 func DeleteBranchPost(c *context.Context) {

+ 1 - 1
internal/route/repo/release.go

@@ -320,7 +320,7 @@ func DeleteRelease(c *context.Context) {
 		c.Flash.Success(c.Tr("repo.release.deletion_success"))
 	}
 
-	c.JSONSuccess( map[string]interface{}{
+	c.JSONSuccess(map[string]interface{}{
 		"redirect": c.Repo.RepoLink + "/releases",
 	})
 }