یک لینتر می تواند به پاکسازی کد شما و کشف اشکالات مخفیانه پنهان در آن کمک کند. برای برنامههای Go بهتر از این بسته پردهبندی خاص استفاده کنید.
Linting نوعی تحلیل کد استاتیک برای شناسایی خطاهای بالقوه کد پایه است. لینترها کد را برای خطاهای نحوی و مسائل مربوط به سبک تجزیه و تحلیل می کنند. این فرآیند می تواند به جلوگیری از اشکالات، بهبود خوانایی، اجرای بهترین شیوه ها و صرفه جویی در زمان کمک کند.
لینتینگ یک روش استاندارد در توسعه نرم افزار است. اگرچه در کتابخانه استاندارد Go خبری از لینتر تعبیه نشده است، اما بسیاری از ابزارهای لینتینگ شخص ثالث در اکوسیستم Go وجود دارند. اینها شامل بسته های GolangCI Lint، Go Meta Linter و Staticcheck است.
بسته GolangCI Lint
پکیج golangci-lint یک لینت قدرتمند و انعطاف پذیر برای Go است که می تواند به شما در شناسایی و رفع خطاهای کد کمک کند. سهولت استفاده، توسعه پذیری و مجموعه جامعی از لنگرهای داخلی بسته، آن را به انتخابی محبوب برای بسیاری از توسعه دهندگان Go تبدیل کرده است.
GolangCI Lint کد منبع Go را تجزیه و تحلیل می کند و بازخوردی در مورد اشکالات احتمالی، مسائل امنیتی و نقض سبک کدنویسی با عملکردی برای تجزیه و تحلیل با عملکرد بالا و پشتیبانی از یکپارچه سازی مداوم (CI) ارائه می دهد.
برای نصب بسته Golangci-lint، این دستور ترمینال را در پوشه کاری پروژه خود اجرا کنید:
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.51.1
برای دستور نصب بسته، نسخه Go شما باید 1.19 یا بالاتر باشد. همچنین می توانید صفحه نصب golangci-lint را برای سایر روش های نصب موجود بررسی کنید.
این دستور GolangCI را به عنوان یک ابزار CLI روی سیستم شما نصب می کند. با این دستور می توانید نصب را تأیید کنید:
golangci-lint --version
دستور باید نسخه golangci-lint را که نصب کرده اید نمایش دهد.
پیکربندی Linter
لینترها بسیار متنوع هستند، بنابراین برای نصب یک لنگر، باید لینتر را برای پروژه خود پیکربندی کنید.
ابزار golangci-lint از فایل های YAML برای پیکربندی استفاده می کند. تنظیمات لینتر خود را در فایل YAML برای خواندن بسته مشخص خواهید کرد.
با استفاده از این دستور می توانید یک فایل پیکربندی پیش فرض ایجاد کنید:
golangci-lint config > .golangci.yml
این دستور یک فایل جدید به نام .golangci.yml در فهرست فعلی شما ایجاد می کند. شما می توانید به ویرایش این فایل برای پیکربندی لینتر برای پروژه خود ادامه دهید.
در اینجا محتویات فایل .golangci.yml هنگام اجرای دستور است:
این فایل حاوی اطلاعاتی در مورد ابزار golangci-lint و گزینه هایی است که می توانید برای پیکربندی فرآیند لیست خود استفاده کنید.
برای افزودن قوانین linting برای برنامه خود باید فایل را ویرایش کنید. شما می توانید لیست کامل لینترهای موجود را در صفحه مستندات golangci-lint Linters بیابید. یا می توانید دستور help linters را برای مشاهده لینترها در خط فرمان خود اجرا کنید:
golangci-lint help linters
این فرمان تمام Linter های موجود برای نسخه بسته ای که نصب کرده اید را خروجی می دهد.
اجرای لینتر
در اینجا نمایشی از خط زدن عبارت “سلام، دنیا!” برنامه ای که از بسته net/http استفاده می کند:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, world!")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
این برنامه یک تابع handler را تعریف میکند که نمونههای Writer و درخواست را از نوع ResponseWriter و Request بسته http دریافت میکند. تابع handler می نویسد “Hello, World!” به مشتری در صورت درخواست
تابع اصلی مسیر / را به تابع کنترلر نصب می کند و تابع ListenAndServe سرور را در پورت لوکال هاست 8080 راه اندازی می کند.
تابع ListenAndServe یک خطا برمی گرداند، اما برنامه آن را نادیده می گیرد. این پیکربندی تضمین میکند که لینتر این مشکل را برجسته میکند:
linters-settings:
deadcode:
# ignore all test files
skip-files: "_test\\.go$"
govet:
# disable shadowing check
check-shadowing: false
golint:
# ignore errors about exported function names
exclude-use-default-exported: true
# ignore errors about underscores in package names
exclude-useless-naming: true
gosec:
# disable gosec tests, since they are slow and can produce false positives
tests: false
unused:
# report unused function arguments, but not unused variables
check-exported: true
check-blank: true
check-tests: true
پس از تنظیم این پیکربندی لینتر، می توانید با دستور run، لینتر را اجرا کنید:
golangci-lint run
# equivalent, runs all programs
golangci-lint run ./...
همچنین، میتوانید فایلهای خاصی را با تعیین نام یا مسیر فایل پس از دستور run، پر کنید:
golangci-lint run dir1 dir2/... dir3/file1.go
در اینجا نتیجه اجرای لینتر در برابر برنامه است:
ابزار golangci-lint همه کاره است و پیکربندی شما بر اساس پروژه شما متفاوت خواهد بود.
شما می توانید پروژه های جاوا اسکریپت خود را با ESLint پر کنید
Linting یک کار توسعه نرم افزار محبوب است و بیشتر زبان های برنامه نویسی و IDE ها ابزارهایی را برای برنامه های linting ارائه می دهند. برای جاوا اسکریپت، ESLint پرطرفدارترین لینتر است.
Eslint چندین قواعد پردهبندی را ارائه میکند که از استانداردهای صنعتی در ابزارهای CLI، IDE و ویرایشگر متن پیروی میکنند و ابزار لینتینگ را به گزینهای عالی برای توسعهدهندگان جاوا اسکریپت تبدیل میکنند.