مهدی خانزادی
۲۷ تیر ۱۴۰۵
یاد میگیریم چطور go fix به ما کمک میکند تا بعد از آپگرید کردن به ورژن های جدیدتر Golang, کدها را آنالیز و بهبود دهیم.
ابزار go fix با استفاده از مجموعهای از قواعد از پیش تعریف شده، بخشهایی از کد را که قابل بهبود هستند شناسایی کرده و بهصورت خودکار بازنویسی میکند. این ابزار معمولاً کدهای قدیمی را به نسخهای بهروزتر تبدیل میکند تا از قابلیتهای جدید زبان Go استفاده کنند.
دستور go fix را میتوان به همراه یکسری پترن (مشابه go build ) که مشخص میکنند این دستور چه فایل هایی را باید تغییر دهد بکار برد.
با اجرا کردن دستور بالا, go fix بر روی تمامی فایل های که در دایرکتوری فعلی یا زیردایرکتوری های آن موجود است اجرا میشود. در صورتی که هیچ مشکل یا خطایی رخ ندهد, بخش هایی از کد که قابل بهبود هستند شناسایی و به صورت خودکار بازنویسی میشوند. فایل هایی که به صورت خودکار تولید شده اند (قسمت go generate را ببینید) نادیده گرفته خواهند شد.
پیشنهاد میشود بعد از هر بار آپگرید کردن ورژن گولنگ به نسخه های بالاتر, یکبار دستور go fix را بر روی پروژه خود اجرا کنیم تا بخش هایی از کد که قابل شناسایی هستند بر حسب ویژگی های جدید معرفی شده بازنویسی شوند.
برای دیدن تغییرات قبل از اعمال آنها, میتوانید از فلگ -diff استفاده کنید. بدین ترتیب قبل از اعمال تغییرات میتوانید آنها را مشاهده کنید.
برای دیدن لیست آنالیزور هایی که در دستور go fix موجود هستند میتوانیم از go tool fix help استفاده کنیم.
go tool fix helpبا اضافه کردن نام آنالیزور به دستور, میتوانیم مستندات کامل آن را ببینیم:
go tool fix forvarبه صورت پیش فرض وقتی دستور go fix را استفاده میکنیم, تمامی آنالیزورها بر روی کد اجرا میشوند. برای اینکه تنها آنالیزورهای مد نظر خود را اجرا کنیم کافیست نام آنالیزور را به صورت flag به دستور پاس دهیم. به عنوان مثال go fix -forvar ./… تنها آنالیزور forvar را بر روی کد اجرا میکند.
بلعکس اگر بخواهیم همه آنالیزورها بجز یکسری آنالیزور خاص را بر روی کد اجرا کنیم کافیست نام آنالیزورهایی که میخواهید غیر فعال شوند را به صورت فلگ استفاده کنیم و برابر با false قرار دهیم.
اگر درون کد خود تگ یا فایل هایی دارید که بر حسب نوع CPU یا پلتفرم کد متفاوتی دارند, میتوانید اجرای دستور go fix را با مشخص کردن GOOS و GOARCH نسبت به نوع پلتفرم و CPU محدود کنید.
بدین ترتیب با محدود کردن تغییرات نسبت به نوع آنالیزور , پلتفرم و نوع CPU میتوان تغییرات را به صورت محدود و به مرور اعمال کرد و بجای اینکه ناگهان با صدها تغییر در صدها فایل مواجه شد, تغییرات را در چندین مرحله اما با اندازه های کوچکتر اعمال کرد.