Rework spellchecking, add lint-spell (#29112)
Backport clean cherry-picks of9c39f8515fandc7a21cbb0conto 1.21. - Use maintained fork https://github.com/golangci/misspell - Rename `mispell-check` to `lint-spell`, add `lint-spell-fix` - Run `lint-spell` in separate actions step - Lint more files, fix discovered issues - Remove inaccurate and outdated info in docs (we do not need GOPATH for tools anymore) Maybe later we can add more spellchecking tools, but I have not found any good ones yet.
This commit is contained in:
		
							parent
							
								
									d823465d94
								
							
						
					
					
						commit
						8cd83ff391
					
				|  | @ -64,6 +64,18 @@ jobs: | ||||||
|       - run: make deps-frontend |       - run: make deps-frontend | ||||||
|       - run: make lint-swagger |       - run: make lint-swagger | ||||||
| 
 | 
 | ||||||
|  |   lint-spell: | ||||||
|  |     if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.frontend == 'true' || needs.files-changed.outputs.actions == 'true' || needs.files-changed.outputs.docs == 'true' || needs.files-changed.outputs.templates == 'true' | ||||||
|  |     needs: files-changed | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v4 | ||||||
|  |       - uses: actions/setup-go@v5 | ||||||
|  |         with: | ||||||
|  |           go-version-file: go.mod | ||||||
|  |           check-latest: true | ||||||
|  |       - run: make lint-spell | ||||||
|  | 
 | ||||||
|   lint-go-windows: |   lint-go-windows: | ||||||
|     if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true' |     if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true' | ||||||
|     needs: files-changed |     needs: files-changed | ||||||
|  |  | ||||||
							
								
								
									
										24
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										24
									
								
								Makefile
								
								
								
								
							|  | @ -30,7 +30,7 @@ EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-che | ||||||
| GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.5.0 | GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.5.0 | ||||||
| GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.1 | GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.1 | ||||||
| GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11 | GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11 | ||||||
| MISSPELL_PACKAGE ?= github.com/client9/misspell/cmd/misspell@v0.3.4 | MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.4.1 | ||||||
| SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.30.5 | SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.30.5 | ||||||
| XGO_PACKAGE ?= src.techknowlogick.com/xgo@latest | XGO_PACKAGE ?= src.techknowlogick.com/xgo@latest | ||||||
| GO_LICENSES_PACKAGE ?= github.com/google/go-licenses@v1.6.0 | GO_LICENSES_PACKAGE ?= github.com/google/go-licenses@v1.6.0 | ||||||
|  | @ -142,6 +142,8 @@ TAR_EXCLUDES := .git data indexers queues log node_modules $(EXECUTABLE) $(FOMAN | ||||||
| GO_DIRS := build cmd models modules routers services tests | GO_DIRS := build cmd models modules routers services tests | ||||||
| WEB_DIRS := web_src/js web_src/css | WEB_DIRS := web_src/js web_src/css | ||||||
| 
 | 
 | ||||||
|  | SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) docs/content templates options/locale/locale_en-US.ini .github | ||||||
|  | 
 | ||||||
| GO_SOURCES := $(wildcard *.go) | GO_SOURCES := $(wildcard *.go) | ||||||
| GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go" ! -path modules/options/bindata.go ! -path modules/public/bindata.go ! -path modules/templates/bindata.go) | GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go" ! -path modules/options/bindata.go ! -path modules/public/bindata.go ! -path modules/templates/bindata.go) | ||||||
| GO_SOURCES += $(GENERATED_GO_DEST) | GO_SOURCES += $(GENERATED_GO_DEST) | ||||||
|  | @ -219,6 +221,8 @@ help: | ||||||
| 	@echo " - lint-swagger                     lint swagger files" | 	@echo " - lint-swagger                     lint swagger files" | ||||||
| 	@echo " - lint-templates                   lint template files" | 	@echo " - lint-templates                   lint template files" | ||||||
| 	@echo " - lint-yaml                        lint yaml files" | 	@echo " - lint-yaml                        lint yaml files" | ||||||
|  | 	@echo " - lint-spell                       lint spelling" | ||||||
|  | 	@echo " - lint-spell-fix                   lint spelling and fix issues" | ||||||
| 	@echo " - checks                           run various consistency checks" | 	@echo " - checks                           run various consistency checks" | ||||||
| 	@echo " - checks-frontend                  check frontend files" | 	@echo " - checks-frontend                  check frontend files" | ||||||
| 	@echo " - checks-backend                   check backend files" | 	@echo " - checks-backend                   check backend files" | ||||||
|  | @ -309,10 +313,6 @@ fmt-check: fmt | ||||||
| 	  exit 1; \
 | 	  exit 1; \
 | ||||||
| 	fi | 	fi | ||||||
| 
 | 
 | ||||||
| .PHONY: misspell-check |  | ||||||
| misspell-check: |  | ||||||
| 	go run $(MISSPELL_PACKAGE) -error $(GO_DIRS) $(WEB_DIRS) |  | ||||||
| 
 |  | ||||||
| .PHONY: $(TAGS_EVIDENCE) | .PHONY: $(TAGS_EVIDENCE) | ||||||
| $(TAGS_EVIDENCE): | $(TAGS_EVIDENCE): | ||||||
| 	@mkdir -p $(MAKE_EVIDENCE_DIR) | 	@mkdir -p $(MAKE_EVIDENCE_DIR) | ||||||
|  | @ -352,13 +352,13 @@ checks: checks-frontend checks-backend | ||||||
| checks-frontend: lockfile-check svg-check | checks-frontend: lockfile-check svg-check | ||||||
| 
 | 
 | ||||||
| .PHONY: checks-backend | .PHONY: checks-backend | ||||||
| checks-backend: tidy-check swagger-check fmt-check misspell-check swagger-validate security-check | checks-backend: tidy-check swagger-check fmt-check swagger-validate security-check | ||||||
| 
 | 
 | ||||||
| .PHONY: lint | .PHONY: lint | ||||||
| lint: lint-frontend lint-backend | lint: lint-frontend lint-backend lint-spell | ||||||
| 
 | 
 | ||||||
| .PHONY: lint-fix | .PHONY: lint-fix | ||||||
| lint-fix: lint-frontend-fix lint-backend-fix | lint-fix: lint-frontend-fix lint-backend-fix lint-spell-fix | ||||||
| 
 | 
 | ||||||
| .PHONY: lint-frontend | .PHONY: lint-frontend | ||||||
| lint-frontend: lint-js lint-css | lint-frontend: lint-js lint-css | ||||||
|  | @ -396,6 +396,14 @@ lint-swagger: node_modules | ||||||
| lint-md: node_modules | lint-md: node_modules | ||||||
| 	npx markdownlint docs *.md | 	npx markdownlint docs *.md | ||||||
| 
 | 
 | ||||||
|  | .PHONY: lint-spell | ||||||
|  | lint-spell: | ||||||
|  | 	@go run $(MISSPELL_PACKAGE) -error $(SPELLCHECK_FILES) | ||||||
|  | 
 | ||||||
|  | .PHONY: lint-spell-fix | ||||||
|  | lint-spell-fix: | ||||||
|  | 	@go run $(MISSPELL_PACKAGE) -w $(SPELLCHECK_FILES) | ||||||
|  | 
 | ||||||
| .PHONY: lint-go | .PHONY: lint-go | ||||||
| lint-go: | lint-go: | ||||||
| 	$(GO) run $(GOLANGCI_LINT_PACKAGE) run | 	$(GO) run $(GOLANGCI_LINT_PACKAGE) run | ||||||
|  |  | ||||||
|  | @ -29,7 +29,7 @@ menu: | ||||||
| [ini](https://github.com/go-ini/ini/#recursive-values) 这里的说明。 | [ini](https://github.com/go-ini/ini/#recursive-values) 这里的说明。 | ||||||
| 标注了 :exclamation: 的配置项表明除非你真的理解这个配置项的意义,否则最好使用默认值。 | 标注了 :exclamation: 的配置项表明除非你真的理解这个配置项的意义,否则最好使用默认值。 | ||||||
| 
 | 
 | ||||||
| 在下面的默认值中,`$XYZ`代表环境变量`XYZ`的值(详见:`enviroment-to-ini`)。 _`XxYyZz`_是指默认配置的一部分列出的值。这些在 app.ini 文件中不起作用,仅在此处列出作为文档说明。 | 在下面的默认值中,`$XYZ`代表环境变量`XYZ`的值(详见:`environment-to-ini`)。 _`XxYyZz`_是指默认配置的一部分列出的值。这些在 app.ini 文件中不起作用,仅在此处列出作为文档说明。 | ||||||
| 
 | 
 | ||||||
| 包含`#`或者`;`的变量必须使用引号(`` ` ``或者`""""`)包裹,否则会被解析为注释。 | 包含`#`或者`;`的变量必须使用引号(`` ` ``或者`""""`)包裹,否则会被解析为注释。 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -243,10 +243,10 @@ documentation using: | ||||||
| make generate-swagger | make generate-swagger | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| You should validate your generated Swagger file and spell-check it with: | You should validate your generated Swagger file: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| make swagger-validate misspell-check | make swagger-validate | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| You should commit the changed swagger JSON file. The continuous integration | You should commit the changed swagger JSON file. The continuous integration | ||||||
|  |  | ||||||
|  | @ -228,10 +228,10 @@ Gitea Logo的 PNG 和 SVG 版本是使用 `TAGS="gitea" make generate-images`  | ||||||
| make generate-swagger | make generate-swagger | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| 您应该验证生成的 Swagger 文件并使用以下命令对其进行拼写检查: | 您应该验证生成的 Swagger 文件: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| make swagger-validate misspell-check | make swagger-validate | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| 您应该提交更改后的 swagger JSON 文件。持续集成服务器将使用以下方法检查是否已完成: | 您应该提交更改后的 swagger JSON 文件。持续集成服务器将使用以下方法检查是否已完成: | ||||||
|  |  | ||||||
|  | @ -27,13 +27,7 @@ Next, [install Node.js with npm](https://nodejs.org/en/download/) which is | ||||||
| required to build the JavaScript and CSS files. The minimum supported Node.js | required to build the JavaScript and CSS files. The minimum supported Node.js | ||||||
| version is @minNodeVersion@ and the latest LTS version is recommended. | version is @minNodeVersion@ and the latest LTS version is recommended. | ||||||
| 
 | 
 | ||||||
| **Note**: When executing make tasks that require external tools, like | **Note**: Go version @minGoVersion@ or higher is required. However, it is recommended to | ||||||
| `make misspell-check`, Gitea will automatically download and build these as |  | ||||||
| necessary. To be able to use these, you must have the `"$GOPATH/bin"` directory |  | ||||||
| on the executable path. If you don't add the go bin directory to the |  | ||||||
| executable path, you will have to manage this yourself. |  | ||||||
| 
 |  | ||||||
| **Note 2**: Go version @minGoVersion@ or higher is required. However, it is recommended to |  | ||||||
| obtain the same version as our continuous integration, see the advice given in | obtain the same version as our continuous integration, see the advice given in | ||||||
| [Hacking on Gitea](development/hacking-on-gitea.md) | [Hacking on Gitea](development/hacking-on-gitea.md) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -21,9 +21,7 @@ menu: | ||||||
| 
 | 
 | ||||||
| 接下来,[安装 Node.js 和 npm](https://nodejs.org/zh-cn/download/), 这是构建 JavaScript 和 CSS 文件所需的。最低支持的 Node.js 版本是 @minNodeVersion@,建议使用最新的 LTS 版本。 | 接下来,[安装 Node.js 和 npm](https://nodejs.org/zh-cn/download/), 这是构建 JavaScript 和 CSS 文件所需的。最低支持的 Node.js 版本是 @minNodeVersion@,建议使用最新的 LTS 版本。 | ||||||
| 
 | 
 | ||||||
| **注意**:当执行需要外部工具的 make 任务(如`make misspell-check`)时,Gitea 将根据需要自动下载和构建这些工具。为了能够实现这个目的,你必须将`"$GOPATH/bin"`目录添加到可执行路径中。如果没有将 Go 的二进制目录添加到可执行路径中,你需要自行解决产生的问题。 | **注意**:需要 Go 版本 @minGoVersion@ 或更高版本。不过,建议获取与我们的持续集成(continuous integration, CI)相同的版本,请参阅在 [Hacking on Gitea](development/hacking-on-gitea.md) 中给出的建议。 | ||||||
| 
 |  | ||||||
| **注意2**:需要 Go 版本 @minGoVersion@ 或更高版本。不过,建议获取与我们的持续集成(continuous integration, CI)相同的版本,请参阅在 [Hacking on Gitea](development/hacking-on-gitea.md) 中给出的建议。 |  | ||||||
| 
 | 
 | ||||||
| ## 下载 | ## 下载 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| {{/* Attributes: | {{/* Attributes: | ||||||
| * root | * root | ||||||
| * ContainerClasses | * ContainerClasses | ||||||
| * (TODO: search "branch_dropdown" in the template direcotry) | * (TODO: search "branch_dropdown" in the template directory) | ||||||
| */}} | */}} | ||||||
| {{$defaultSelectedRefName := $.root.BranchName}} | {{$defaultSelectedRefName := $.root.BranchName}} | ||||||
| {{if and .root.IsViewTag (not .noTag)}} | {{if and .root.IsViewTag (not .noTag)}} | ||||||
|  |  | ||||||
|  | @ -367,7 +367,7 @@ | ||||||
| 				<div class="timeline-item event"> | 				<div class="timeline-item event"> | ||||||
| 					{{if .OriginalAuthor}} | 					{{if .OriginalAuthor}} | ||||||
| 					{{else}} | 					{{else}} | ||||||
| 					{{/* Some timeline avatars need a offset to correctly allign with their speech | 					{{/* Some timeline avatars need a offset to correctly align with their speech | ||||||
| 							bubble. The condition depends on review type and for positive reviews whether | 							bubble. The condition depends on review type and for positive reviews whether | ||||||
| 							there is a comment element or not */}} | 							there is a comment element or not */}} | ||||||
| 					<a class="timeline-avatar{{if or (and (eq .Review.Type 1) (or .Content .Attachments)) (and (eq .Review.Type 2) (or .Content .Attachments)) (eq .Review.Type 3)}} timeline-avatar-offset{{end}}"{{if gt .Poster.ID 0}} href="{{.Poster.HomeLink}}"{{end}}> | 					<a class="timeline-avatar{{if or (and (eq .Review.Type 1) (or .Content .Attachments)) (and (eq .Review.Type 2) (or .Content .Attachments)) (eq .Review.Type 3)}} timeline-avatar-offset{{end}}"{{if gt .Poster.ID 0}} href="{{.Poster.HomeLink}}"{{end}}> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue