لینت در واقع یک سری از قوانین و قواعد است که کمک میکند به ما تا هم کدهای تمیز تری بنویسیم و هم از بروز خطاهای احتمالی جلوگیری کنیم.
این کار به وسیله ابزار Lint انجام میشود که کدهای نوشته شده را آنالیز میکند و موارد لازم, خطاها, باگ ها و باقی مسائل را نمایش میدهد.
لینتینگ یک فرآیند است که در آن کد منبع برای خطاهای برنامه نویسی و همچنین خطاهای سبکی و کد بدون قالب چک میشود.
این به شناسایی برخی از اشتباهات رایج و نادری که در طول برنامه نویسی انجام میشود، مانند اشتباهات منطقی، متغیرهای غیر استفاده شده، دستورهای if-else خالی و موارد دیگر، کمک میکند.
لینتر (Lint) یک ابزار است که کد منبع را برای یافتن خطاهای برنامه نویسی، باگها، خطاهای سبکی و ساختارهای مشکوک تجزیه و تحلیل میکند. این ابزار به تأیید کیفیت کد کمک میکند.
همانطور که گفته شد لینت شامل یک سری قوانین است که با رعایت کردن آنها از بروز خطاهای مختلف جلوگیری میکنیم.
یکی از آن قوانین متغیرها و کلاس های استفاده نشده است.
به کد زیر توجه کنید.
class MyApp extends StatelessWidget { Widget build(context) { return Scaffold( appBar: AppBar(title: Text('Lint Rules Demo'),), body: Center( child: Text('Heey There!'),), ); }
در کد بالا در خط دوم یک امیپورت انجام داده ایم اما از آن در طول برنامه هیچ استفاده ای نکرده ایم.
همین شرایط برای متغیرهایی که تعریف میکنیم ولی از آنها استفاده نمیکنیم هم رخ میدهد.
معمولا توصیه میشود که در یک پروژه از همان ابتدا سیستم لینت پیاده سازی شود نه در انتها.
قوانین لینت شامل سه دسته بندی مختلف میباشد که میتوانید از آنها استفاده کنید.
قوانین خطا – این قوانین مرتبط با خطاهای رایجی هستند که هنگام برنامهنویسی رخ میدهند.
قوانین سبک – این قوانین به سبک نوشتاری کد متمرکز هستند، به عنوان مثال، به دستورالعمل سبکی که توسط راهنمای سبک Dart تعیین شده است.
Pub – این قوانین مرتبط با مسائل مربوط به ابزار Pub هستند. Pub یک ابزار مدیریت پکیجها در دارت است و مرتبط با موضوعاتی مانند وابستگیها و مدیریت پکیجها در پروژههای دارت میشود.
در حال حاضر برخلاف گذشته زمانی که پروژه جدیدی در فریمورک فلاتر ایجاد میکنید فایل analysis_options.yaml هم همراه با آن ساخته میشود و نیازی به تعریف آن ندارید.
اما اگر پروژه شما قدیمی است نیاز دارید تا این فایل را حتما بسازید.
این فایل زمانی کاربرد دارد که بخواهید از قوانین مشخصی از Lint استفاده کنید.
در غیر اینصورت با این فایل میتوانید کاری نداشته باشید.
دو روش کلی برای ایجاد قوانین لینت وجود دارد.
۱: استفاده از قوانین موجود قبلی
۲: ایجاد قوانین شخصی سازی شده خودتان
برای روش اول یعنی استفاده از قوانین موجود قبلی lint پکیج های مختلفی وجود دارد که میتوانید از آنها استفاده کنید.
Dart linter و Flutter_lints از محبوب ترین آنها میباشد.
در پروژه های فلاتر پکیج Flutter_lints بصورت پیشفرض وجود دارد.
این قوانینی هستند که هر فرد بر اساس مشخصات شخصی خود بدون استفاده از بستههای dart_lint /flutter_lint که قوانین تنظیم شده از پیش را دارند، تنظیم میکند.
هنگام تنظیم و سفارشیسازی قوانین لینتر فردی خود، شما قوانین را در فایل analysis_options.yaml به عنوان نشانداده شده در مرحله قبل خواهید کرد.
در زیر ساختار یک فایل analysis_options.yaml جدید قبل از افزودن تغییرات به آن نمایش داده شده است:
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at
# https://dart-lang.github.io/linter/lints/index.html.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
در این قسمت بخشی از قوانین لینت را باهم بررسی میکنیم.
یکی از قوانین لینت عدم استفاده از دستور پرینت در پروژه نهایی است.
برای کدهای تولیدی، در نظر داشته باشید که از یک چارچوب ورودیها استفاده کنید.
اگر از فریمورک Flutter استفاده میکنید، میتوانید از debugPrint
استفاده کنید یا تماسهای print
خود را با یک بررسی برای kDebugMode
محاصره کنید.
به روش های زیر میتوانید عمل کنید.
void f(int x) { debugPrint('debug: $x'); ... } یا void f(int x) { log('log: $x'); ... } یا void f(int x) { if (kDebugMode) { print('debug: $x'); } ... }
منبع: آموزش فلاتر