خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

برنامه های خود را با بسته گلانگ CI لینت کنید

یک لینتر می تواند به پاکسازی کد شما و کشف اشکالات مخفیانه پنهان در آن کمک کند. برای برنامه‌های Go بهتر از این بسته پرده‌بندی خاص استفاده کنید.

Linting نوعی تحلیل کد استاتیک برای شناسایی خطاهای بالقوه کد پایه است. لینترها کد را برای خطاهای نحوی و مسائل مربوط به سبک تجزیه و تحلیل می کنند. این فرآیند می تواند به جلوگیری از اشکالات، بهبود خوانایی، اجرای بهترین شیوه ها و صرفه جویی در زمان کمک کند.

لینتینگ یک روش استاندارد در توسعه نرم افزار است. اگرچه در کتابخانه استاندارد Go خبری از لینتر تعبیه نشده است، اما بسیاری از ابزارهای لینتینگ شخص ثالث در اکوسیستم Go وجود دارند. اینها شامل بسته های GolangCI Lint، Go Meta Linter و Staticcheck است.

بسته GolangCI Lint

لوگوی 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 را برای سایر روش های نصب موجود بررسی کنید.

مطلب مرتبط:   بهینه سازی پرس و جوهای SQL: یک مثال با استفاده از MSSQL

این دستور GolangCI را به عنوان یک ابزار CLI روی سیستم شما نصب می کند. با این دستور می توانید نصب را تأیید کنید:

golangci-lint --version

دستور باید نسخه golangci-lint را که نصب کرده اید نمایش دهد.

پیکربندی Linter

لینترها بسیار متنوع هستند، بنابراین برای نصب یک لنگر، باید لینتر را برای پروژه خود پیکربندی کنید.

ابزار golangci-lint از فایل های YAML برای پیکربندی استفاده می کند. تنظیمات لینتر خود را در فایل YAML برای خواندن بسته مشخص خواهید کرد.

با استفاده از این دستور می توانید یک فایل پیکربندی پیش فرض ایجاد کنید:

golangci-lint config > .golangci.yml

این دستور یک فایل جدید به نام .golangci.yml در فهرست فعلی شما ایجاد می کند. شما می توانید به ویرایش این فایل برای پیکربندی لینتر برای پروژه خود ادامه دهید.

در اینجا محتویات فایل .golangci.yml هنگام اجرای دستور است:

دستورالعمل استفاده از فایل Golangci-lint YAML

این فایل حاوی اطلاعاتی در مورد ابزار golangci-lint و گزینه هایی است که می توانید برای پیکربندی فرآیند لیست خود استفاده کنید.

برای افزودن قوانین linting برای برنامه خود باید فایل را ویرایش کنید. شما می توانید لیست کامل لینترهای موجود را در صفحه مستندات golangci-lint Linters بیابید. یا می توانید دستور help linters را برای مشاهده لینترها در خط فرمان خود اجرا کنید:

golangci-lint help linters

این فرمان تمام Linter های موجود برای نسخه بسته ای که نصب کرده اید را خروجی می دهد.

نتیجه اجرای دستور help در Golangci-lint است

اجرای لینتر

در اینجا نمایشی از خط زدن عبارت “سلام، دنیا!” برنامه ای که از بسته 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!” به مشتری در صورت درخواست

مطلب مرتبط:   چگونه یک URL را با استفاده از عبارات منظم اعتبار سنجی کنیم

تابع اصلی مسیر / را به تابع کنترلر نصب می کند و تابع 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

در اینجا نتیجه اجرای لینتر در برابر برنامه است:

نتیجه اجرای لینتر روی یک برنامه http است

ابزار golangci-lint همه کاره است و پیکربندی شما بر اساس پروژه شما متفاوت خواهد بود.

شما می توانید پروژه های جاوا اسکریپت خود را با ESLint پر کنید

Linting یک کار توسعه نرم افزار محبوب است و بیشتر زبان های برنامه نویسی و IDE ها ابزارهایی را برای برنامه های linting ارائه می دهند. برای جاوا اسکریپت، ESLint پرطرفدارترین لینتر است.

Eslint چندین قواعد پرده‌بندی را ارائه می‌کند که از استانداردهای صنعتی در ابزارهای CLI، IDE و ویرایشگر متن پیروی می‌کنند و ابزار لینتینگ را به گزینه‌ای عالی برای توسعه‌دهندگان جاوا اسکریپت تبدیل می‌کنند.

مطلب مرتبط:   6 گام برای تبدیل شدن به یک توسعه دهنده مستقل مستقل