-
Notifications
You must be signed in to change notification settings - Fork 7.8k
chore: add basic linters #12084
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: add basic linters #12084
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR refactors HTTP response handling to improve resource management and modernizes the codebase by enabling additional linters. The main changes include extracting link headers from HTTP responses for pagination, fixing resource leaks, and correcting error handling patterns.
Key changes:
- Refactored pagination logic to extract link headers directly from responses instead of passing entire response objects
- Added missing
defer resp.Body.Close()calls to prevent resource leaks - Removed unnecessary
tt := ttshadowing patterns for Go 1.22+ compatibility - Enabled additional linters (bodyclose, copyloopvar, nilerr, etc.) to enforce better code quality
Reviewed Changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| pkg/search/searcher.go | Refactored search() to return link header string instead of full response; updated pagination logic |
| pkg/cmd/repo/garden/http.go | Modified getResponse() to return link header array instead of response object |
| pkg/cmd/repo/fork/fork.go | Fixed error return to properly return nil on success |
| pkg/cmd/repo/edit/edit.go | Added missing defer resp.Body.Close() calls |
| pkg/cmd/repo/delete/http.go | Split EndpointNeedsScopes() call from error handling return |
| pkg/httpmock/stub.go | Added //nolint:bodyclose directive for test helper |
| pkg/cmd/pr/shared/templates.go | Added //nolint:nilerr directive with explanation |
| pkg/cmd/gist/list/list.go | Fixed error return to propagate error instead of returning nil |
| pkg/cmd/gist/create/create.go | Split EndpointNeedsScopes() call from error handling return |
| pkg/cmd/codespace/ssh.go | Fixed goroutine closure to pass loop variable as parameter |
| pkg/cmd/codespace/ports.go | Removed unnecessary pair := pair shadowing |
| pkg/cmd/root/help_topic_test.go | Removed unnecessary tt := tt shadowing in test |
| pkg/cmd/browse/browse_test.go | Changed filepath.Join to filepath.FromSlash for cross-platform compatibility |
| pkg/cmd/run/download/download_test.go | Removed unnecessary filepath.Join calls for single-element paths |
| internal/safepaths/absolute_test.go | Removed unnecessary tt := tt shadowing in test |
| api/queries_repo.go | Added missing defer resp.Body.Close() call |
| api/pull_request_test.go | Removed unnecessary tt := tt shadowing in tests |
| api/client.go | Changed EndpointNeedsScopes() to void return; added documentation about response body handling |
| .golangci.yml | Enabled multiple new linters including bodyclose, copyloopvar, nilerr, etc. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Signed-off-by: Babak K. Shandiz <babakks@github.com>
Signed-off-by: Babak K. Shandiz <babakks@github.com>
The returned response from `api.EndpointNeedsScopes` causes `bodyclose` linter to raise a false positive error, assuming it's a new response that its body needs to be closed. Signed-off-by: Babak K. Shandiz <babakks@github.com>
Signed-off-by: Babak K. Shandiz <babakks@github.com>
Signed-off-by: Babak K. Shandiz <babakks@github.com>
Signed-off-by: Babak K. Shandiz <babakks@github.com>
Signed-off-by: Babak K. Shandiz <babakks@github.com>
Signed-off-by: Babak K. Shandiz <babakks@github.com>
Signed-off-by: Babak K. Shandiz <babakks@github.com>
Signed-off-by: Babak K. Shandiz <babakks@github.com>
Signed-off-by: Babak K. Shandiz <babakks@github.com>
Signed-off-by: Babak K. Shandiz <babakks@github.com>
56dbaad to
917e365
Compare
Signed-off-by: Babak K. Shandiz <babakks@github.com>
BagToad
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! ✨
|
overriding reviews with @babakks since these are all simple noop linter fixes. |
mairucell667-hash
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
babakks/add-basic-linters
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [cli/cli](https://github.com/cli/cli) | minor | `v2.82.1` -> `v2.83.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>cli/cli (cli/cli)</summary> ### [`v2.83.0`](https://github.com/cli/cli/releases/tag/v2.83.0): GitHub CLI 2.83.0 [Compare Source](cli/cli@v2.82.1...v2.83.0) #### What's Changed ##### ✨ Features - Add `isImmutable` to `release list` JSON output by [@​babakks](https://github.com/babakks) in [#​12064](cli/cli#12064) - `gh agent-task create`: support `--custom-agent`/`-a` flag by [@​BagToad](https://github.com/BagToad) in [#​12068](cli/cli#12068) - 💡 (gh repo delete) Add warning when `--yes` is ignored without a repository, Closes: [#​12033](cli/cli#12033) by [@​Shion1305](https://github.com/Shion1305) in [#​12039](cli/cli#12039) - feat: implement gh `pr revert` by [@​lucasmelin](https://github.com/lucasmelin) in [#​8826](cli/cli#8826) ##### 🐛 Fixes - fix(gist): add support for editing & viewing large files by [@​luxass](https://github.com/luxass) in [#​11761](cli/cli#11761) - Fix gh attestation verify to work when Public Good Instance of Sigstore is unavailable by [@​Copilot](https://github.com/Copilot) in [#​11989](cli/cli#11989) ##### 📚 Docs & Chores - chore: add basic linters by [@​babakks](https://github.com/babakks) in [#​12084](cli/cli#12084) - CI: Update lint govulncheck to use source mode by [@​BagToad](https://github.com/BagToad) in [#​12089](cli/cli#12089) - chore: add `workflow_dispatch` to govulncheck triggers by [@​babakks](https://github.com/babakks) in [#​12085](cli/cli#12085) - Exclude `third-party` from Golangci-lint formatting paths by [@​babakks](https://github.com/babakks) in [#​12058](cli/cli#12058) - Apply `go fix` to remove deprecated `// +build` tags by [@​babakks](https://github.com/babakks) in [#​12056](cli/cli#12056) - Bump Golangci-lint to `v2.6.0` by [@​babakks](https://github.com/babakks) in [#​12049](cli/cli#12049) - Mention `pr checks` in `run list` docs by [@​babakks](https://github.com/babakks) in [#​12050](cli/cli#12050) - Fix typo in comment for `gh issue develop` branch checkout command by [@​jonzfisher](https://github.com/jonzfisher) in [#​12042](cli/cli#12042) - Use "release" sentinel value for release attestation verification by [@​Copilot](https://github.com/Copilot) in [#​11991](cli/cli#11991) - Improve docstring for release-create by [@​bdehamer](https://github.com/bdehamer) in [#​11945](cli/cli#11945) - Improve `api` command docs around `--input` and `--field` by [@​babakks](https://github.com/babakks) in [#​12062](cli/cli#12062) - Fix `--interval` flags docs in `gh pr checks` by [@​2003Aditya](https://github.com/2003Aditya) in [#​12053](cli/cli#12053) #####Dependencies - Bump Go to 1.25.3 by [@​github-actions](https://github.com/github-actions)\[bot] in [#​11926](cli/cli#11926) - chore(deps): bump github.com/cli/go-gh/v2 from 2.12.2 to 2.13.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12095](cli/cli#12095) - Update Go toolchain version to 1.24.9 by [@​BagToad](https://github.com/BagToad) in [#​12054](cli/cli#12054) - chore(deps): bump golang.org/x/text from 0.29.0 to 0.30.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​11973](cli/cli#11973) - chore(deps): bump golang.org/x/crypto from 0.42.0 to 0.43.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​11974](cli/cli#11974) - chore(deps): bump actions/upload-artifact from 4 to 5 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12031](cli/cli#12031) - chore(deps): bump actions/download-artifact from 5 to 6 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12032](cli/cli#12032) - chore(deps): bump github.com/rivo/tview from 0.0.0-20250625164341-a4a78f1e05cb to 0.42.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12000](cli/cli#12000) - chore(deps): bump goreleaser/goreleaser-action from 6.3.0 to 6.4.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​11509](cli/cli#11509) - chore(deps): bump mislav/bump-homebrew-formula-action from 3.4 to 3.6 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​11750](cli/cli#11750) #### New Contributors - [@​lucasmelin](https://github.com/lucasmelin) made their first contribution in [#​8826](cli/cli#8826) - [@​jonzfisher](https://github.com/jonzfisher) made their first contribution in [#​12042](cli/cli#12042) - [@​2003Aditya](https://github.com/2003Aditya) made their first contribution in [#​12053](cli/cli#12053) **Full Changelog**: <cli/cli@v2.82.1...v2.83.0> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNjkuMyIsInVwZGF0ZWRJblZlciI6IjQxLjE2OS4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Fixes #12083
A few notes for the reviewers:
bodyclose: theapi.HandleHTTPError(*http.Response)function pass the provided response togo-gh'sHandleHTTPErrorfunction, which, thankfully, does not close the response body. Added a line to the function to highlight this. I've opened cli/go-gh#202 ingo-ghto remark the same thing in theHandleHTTPErrorfunction docs.bodyclose: refactored a few places where the HTTP response was returned to the caller to be used for pagination data extraction. Again,bodycloseassumes the body stream of returned*http.Responsevalues should be closed by the caller. Since returning the entire response wasn't really necessary I refactored the code to only return the needed response header. It definitely can be better, but for now resolves the issue in a safe way.copyloopvar: As of Go 1.22+, reusing the loop variable is safe, so I got rid off all cases.