-
Notifications
You must be signed in to change notification settings - Fork 2
feat: add support for detecting SELECT * in const and var declarations #2
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
Conversation
|
@MirrexOne Александр, привет! |
|
Привет) |
|
Спасибо большое, буду ждать :) |
|
Ну и в догонку, готов внести необходимые изменения в свой PR или объяснить какие-то моменты |
|
Насколько я поял, в нынешней актуальной версии, package-level константы и переменные с паттерном * - не детектились, верно ? Или возникали случаи false-positive \ false-negative ? |
|
Да, все так. Такие константы и переменные не проверялись |
|
Про false-positive \ false-negative речи не идет |
|
Понял. Спасибо большое, что заметили. Это, действительно, видится важным изменением. |
|
Спасибо! 😃 |
|
Будем ждать в следующий версии golangci-lint 😃 |
|
Извини за назойливость, если все хорошо, может сделаешь новый релиз, чтобы он попал в golangci-lint? 😊 |
|
Ничего страшного, всё понимаю и сейчас буду как раз таки создавать релиз. Как закончю(это будет сегодня) - уведомлю) |
|
@chelout Новый релиз готов. Подскажи, пожалуйста, могу что-то ещё сделать ? Новый релиз, насколько знаю, dependabot в golangci-lint подтянет ? |
|
Спасибо еще раз. Да, полагаю автоматом подтянется в следующий релиз |
Summary
Adds support for detecting
SELECT *usage inconstandvardeclarations at package and function levels.Problem
Previously, the analyzer only detected
SELECT *in:query := "SELECT * FROM users"db.Query("SELECT * FROM users")But missed a common pattern of storing SQL queries in constants:
Solution
Core Changes
checkGenDecl()function to process*ast.GenDeclnodes (const/var declarations)run()andRunWithConfig()const Query = "SELECT * FROM users"var Query = "SELECT * FROM users"const (...)andvar (...)Documentation Updates
Examples
❌ Will be detected:
✅ Good practices:
Technical Details
AST Analysis confirms no duplication:
checkAssignStmthandles*ast.AssignStmt: short declarations (:=) and assignments (=)checkGenDecl(new) handles*ast.GenDecl:constandvardeclarations