تقوم SQLVET بتحليل ثابت على استعلامات SQL الخام في قاعدة رمز GO الخاص بك إلى أخطاء وقت التشغيل المحتملة في وقت البناء.
أبرز الميزة:
تودو:
اذهب أقل من 1.18:
$ go get github.com/houqp/sqlvetاذهب أكبر أو متساوية 1.18:
$ go install github.com/houqp/sqlvet@latestيجب أن تعمل SQLVET خارج المربع لأي مشروع GO باستخدام وحدات GO:
$ sqlvet .
[!] No schema specified, will run without table and column validation.
Checked 10 SQL queries.
? Everything is awesome!
ملاحظة: سيتم تخطي رمز لا يمكن الوصول إليه.
لتمكين المزيد من التحليل المتعمق ، قم بإنشاء ملف تكوين sqlvet.toml بجذر مشروعك وحدد المسار إلى ملف مخطط قاعدة البيانات:
$ cat ./sqlvet.toml
schema_path = "schema/full_schema.sql"
$ sqlvet .
Loaded DB schema from schema/full_schema.sql
table alembic_version with 1 columns
table incident with 13 columns
table usr with 4 columns
Exec @ ./pkg/incident.go:75:19
UPDATE incident SET oops = $1 WHERE id = $2
ERROR: column `oops` is not defined in table `incident`
Checked 10 SQL queries.
Identified 1 errors.
بشكل افتراضي ، يتحقق SQLVET من جميع المكالمات إلى وظيفة الاستعلام في database/sql ، github.com/jmoiron/sqlx ، github.com/jinzhu/gorm و go-gorp/gorp Libraries. ومع ذلك ، يمكنك تكوينه إلى وظائف الاستعلام التعسفي للأبيض كما أدناه:
[[ sqlfunc_matchers ]]
pkg_path = " github.com/mattermost/gorp "
[[ sqlfunc_matchers . rules ]]
query_arg_name = " query "
query_arg_pos = 0
[[ sqlfunc_matchers . rules ]]
query_arg_name = " sql "
query_arg_pos = 0 يخبر التكوين أعلاه SQLVET بتحليل أي وظيفة/طريقة من github.com/mattermost/gorp حزمة تحتوي على المعلمة الأولى المسماة إما query أو sql .
يمكنك أيضًا مطابقة وظائف الاستعلام بالأسماء:
[[ sqlfunc_matchers ]]
pkg_path = " github.com/jmoiron/sqlx "
[[ sqlfunc_matchers . rules ]]
func_name = " NamedExecContext "
query_arg_pos = 1 يخبر التكوين أعلاه SQLVET بتحليل المعلمة الثانية لأي دالة/طريقة مسماة اسمها NamedExecContext في github.com/jmoiron/sqlx .
لتخطي إيجابية خاطئة ، قم بتعليق الخط ذي الصلة مع sqlvet: ignore التعليق:
func foo () {
Db . Query ( fmt . Sprintf ( "SELECT %s" , "1" )) // sqlvet: ignore
}استلهم SQLVET من SAFESQL و SQLC.