feat: add support for detecting SELECT * in const and var declarations#2
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