Skip to content

Deduplicate custom linter analyzer scaffolding - #50700

Merged
pelikhan merged 7 commits into
mainfrom
copilot/duplicate-code-linter-analyzer-scaffolding
Aug 6, 2026
Merged

Deduplicate custom linter analyzer scaffolding#50700
pelikhan merged 7 commits into
mainfrom
copilot/duplicate-code-linter-analyzer-scaffolding

Conversation

Copilot AI commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Custom linters repeated analyzer metadata, default dependencies, repository URLs, and inspector traversal setup across dozens of packages. This centralizes the shared wiring while preserving specialized traversal paths.

  • Shared analyzer utility

    • Add internal/analyzerutil for standard analyzer construction.
    • Centralize default inspect, nolint, and filecheck dependencies.
    • Construct consistent source URLs, including explicit package-path support.
  • Shared traversal bootstrap

    • Add a reusable preorder helper that retrieves the inspector and propagates setup errors.
    • Migrate compatible linters to the helper; retain direct inspector access where cursor traversal is required.
  • Linter migration

    • Replace 62 duplicated analyzer declarations with the shared factory.
    • Preserve analyzer names, documentation, URLs, dependencies, and run behavior.
var Analyzer = analyzerutil.New(
    "appendbytestring",
    "reports redundant []byte string conversions in append calls",
    run,
)

return analyzerutil.Preorder(pass, nodeFilter, func(n ast.Node) {
    analyzeAppendByteString(pass, n, generatedFiles, noLintIndex)
})

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 14.2 AIC · ⌖ 5.16 AIC · ⊞ 8.3K ·
Comment /souschef to run again


Generated by 👨‍🍳 PR Sous Chef · gpt54 · 6.47 AIC · ⌖ 6.82 AIC · ⊞ 8.3K ·
Comment /souschef to run again

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Refactor duplicate linter analyzer scaffolding in pkg/linters Deduplicate custom linter analyzer scaffolding Aug 5, 2026
Copilot AI requested a review from pelikhan August 5, 2026 22:34
@pelikhan
pelikhan marked this pull request as ready for review August 5, 2026 23:00
Copilot AI balanced review requested due to automatic review settings August 5, 2026 23:00

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Centralizes custom linter analyzer scaffolding to resolve #50697 while preserving specialized cursor-based traversal.

Changes:

  • Adds shared analyzer factories with standard dependencies and URLs.
  • Adds reusable preorder traversal setup.
  • Migrates 62 linters while retaining specialized traversal where required.
Show a summary per file
File Description
pkg/linters/appendbytestring/appendbytestring.go Uses shared factory and preorder helper.
pkg/linters/appendoneelement/appendoneelement.go Uses shared factory and preorder helper.
pkg/linters/bytesbufferstring/bytesbufferstring.go Uses shared factory and preorder helper.
pkg/linters/bytescomparestring/bytescomparestring.go Uses shared factory and preorder helper.
pkg/linters/contextcancelnotdeferred/contextcancelnotdeferred.go Uses shared factory and preorder helper.
pkg/linters/ctxbackground/ctxbackground.go Uses shared factory; preserves cursor traversal.
pkg/linters/deferinloop/deferinloop.go Uses shared factory; preserves cursor traversal.
pkg/linters/errorfwrapv/errorfwrapv.go Uses shared factory and preorder helper.
pkg/linters/errormessage/errormessage.go Uses shared factory and preorder helper.
pkg/linters/errortypeassertion/errortypeassertion.go Uses shared factory; preserves cursor traversal.
pkg/linters/errstringmatch/errstringmatch.go Uses shared factory and preorder helper.
pkg/linters/excessivefuncparams/excessivefuncparams.go Uses shared factory and preorder helper.
pkg/linters/execcommandwithoutcontext/execcommandwithoutcontext.go Uses shared factory; preserves cursor traversal.
pkg/linters/fileclosenotdeferred/fileclosenotdeferred.go Uses shared factory and preorder helper.
pkg/linters/fmterrorfnoverbs/fmterrorfnoverbs.go Uses shared factory and preorder helper.
pkg/linters/fprintlnsprintf/fprintlnsprintf.go Uses shared factory and preorder helper.
pkg/linters/goroutinemissingrecover/goroutinemissingrecover.go Uses shared factory and preorder helper.
pkg/linters/hardcodedfilepath/hardcodedfilepath.go Uses shared factory; preserves cursor traversal.
pkg/linters/httpnoctx/httpnoctx.go Uses shared factory; preserves cursor traversal.
pkg/linters/httprespbodyclose/httprespbodyclose.go Uses shared factory and preorder helper.
pkg/linters/httpstatuscode/httpstatuscode.go Uses shared factory; preserves specialized traversal.
pkg/linters/internal/analyzerutil/analyzerutil.go Adds analyzer factories and preorder bootstrap.
pkg/linters/internal/analyzerutil/analyzerutil_test.go Tests metadata, URLs, and dependencies.
pkg/linters/ioutildeprecated/ioutildeprecated.go Uses shared factory; preserves cursor traversal.
pkg/linters/jsonmarshalignoredeerror/jsonmarshalignoredeerror.go Uses shared factory and preorder helper.
pkg/linters/largefunc/largefunc.go Uses shared factory and preorder helper.
pkg/linters/lenstringsplit/lenstringsplit.go Uses shared factory and preorder helper.
pkg/linters/lenstringzero/lenstringzero.go Uses shared factory and preorder helper.
pkg/linters/logfatallibrary/logfatallibrary.go Uses shared factory and preorder helper.
pkg/linters/manualmutexunlock/manualmutexunlock.go Uses shared factory and preorder helper.
pkg/linters/mapclearloop/mapclearloop.go Uses shared factory and preorder helper.
pkg/linters/mapdeletecheck/mapdeletecheck.go Uses shared factory and preorder helper.
pkg/linters/nilctxpassed/nilctxpassed.go Uses shared factory; preserves cursor traversal.
pkg/linters/osexitinlibrary/osexitinlibrary.go Uses shared factory and preorder helper.
pkg/linters/osgetenvlibrary/osgetenvlibrary.go Uses shared factory and preorder helper.
pkg/linters/ossetenvlibrary/ossetenvlibrary.go Uses shared factory and preorder helper.
pkg/linters/panic-in-library-code/panic-in-library-code.go Uses path-aware factory and cursor traversal.
pkg/linters/rawloginlib/rawloginlib.go Uses shared factory and preorder helper.
pkg/linters/regexpcompileinfunction/regexpcompileinfunction.go Uses shared factory; preserves cursor traversal.
pkg/linters/regexpdynamicpattern/regexpdynamicpattern.go Uses shared factory; preserves cursor traversal.
pkg/linters/seenmapbool/seenmapbool.go Uses shared factory and preorder helper.
pkg/linters/sortslice/sortslice.go Uses shared factory; preserves specialized traversal.
pkg/linters/sprintfbool/sprintfbool.go Uses shared factory; preserves cursor traversal.
pkg/linters/sprintferrdot/sprintferrdot.go Uses shared factory and preorder helper.
pkg/linters/sprintferrorsnew/sprintferrorsnew.go Uses shared factory and preorder helper.
pkg/linters/sprintfint/sprintfint.go Uses shared factory and preorder helper.
pkg/linters/strconvparseignorederror/strconvparseignorederror.go Uses shared factory and preorder helper.
pkg/linters/stringbytesroundtrip/stringbytesroundtrip.go Uses shared factory and preorder helper.
pkg/linters/stringreplaceminusone/stringreplaceminusone.go Uses shared factory and preorder helper.
pkg/linters/stringsconcatloop/stringsconcatloop.go Uses shared factory; preserves cursor traversal.
pkg/linters/stringscountcontains/stringscountcontains.go Uses shared factory and preorder helper.
pkg/linters/stringsindexcontains/stringsindexcontains.go Uses shared factory and preorder helper.
pkg/linters/stringsindexhasprefix/stringsindexhasprefix.go Uses shared factory and preorder helper.
pkg/linters/stringsjoinone/stringsjoinone.go Uses shared factory and preorder helper.
pkg/linters/timeafterleak/timeafterleak.go Uses shared factory; preserves cursor traversal.
pkg/linters/timenowsub/timenowsub.go Uses shared factory and preorder helper.
pkg/linters/timesleepnocontext/timesleepnocontext.go Uses shared factory; preserves cursor traversal.
pkg/linters/tolowerequalfold/tolowerequalfold.go Uses shared factory and preorder helper.
pkg/linters/trimleftright/trimleftright.go Uses shared factory and preorder helper.
pkg/linters/uncheckedflushreturn/uncheckedflushreturn.go Uses shared factory and preorder helper.
pkg/linters/uncheckedtypeassertion/uncheckedtypeassertion.go Uses shared factory and preorder helper.
pkg/linters/walkfuncerrshadow/walkfuncerrshadow.go Uses shared factory and preorder helper.
pkg/linters/wgdonenotdeferred/wgdonenotdeferred.go Uses shared factory and preorder helper.
pkg/linters/writebytestring/writebytestring.go Uses shared factory and preorder helper.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 64/64 changed files
  • Comments generated: 0
  • Review effort level: Balanced

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot please review the latest PR feedback, refresh this branch if it is behind main, then run the pr-finisher skill and push any follow-up fixes.

Run: https://github.com/github/gh-aw/actions/runs/31055742237

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 14.2 AIC · ⌖ 5.16 AIC · ⊞ 8.3K ·
Comment /souschef to run again

pelikhan and others added 2 commits August 5, 2026 16:24
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>

Copilot AI commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

@copilot please review the latest PR feedback, refresh this branch if it is behind main, then run the pr-finisher skill and push any follow-up fixes.

  • failed checks:...

Fixed. The CI failure was caused by .github/aw/actions-lock.json having its containers field keys out of lexicographic order (ghcr.io/fabio-rovai/open-ontologies:latest was missing from the sorted position). Sorted the keys and the TestActionsLockJSONFieldsAreSorted test now passes.

Copilot AI requested a review from gh-aw-bot August 5, 2026 23:30
@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot thanks for the follow-up. CI appears complete now. Please run the pr-finisher skill, address any remaining review feedback if needed, and push any final polish before maintainer review.

Run: https://github.com/github/gh-aw/actions/runs/31057198185

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 6.47 AIC · ⌖ 6.82 AIC · ⊞ 8.3K ·
Comment /souschef to run again

@pelikhan
pelikhan merged commit 54c99ac into main Aug 6, 2026
31 checks passed
@pelikhan
pelikhan deleted the copilot/duplicate-code-linter-analyzer-scaffolding branch August 6, 2026 00:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[duplicate-code] Duplicate linter analyzer scaffolding across pkg/linters

4 participants