Linter و کاربرد های اون

اول از همه ببینیم به چی میگن linter


برنامه Lint یا linter ابزاری برای بررسی و آنالیز کدمونه که خطاهای احتمالی اون رو بررسی می کنه.

کد زیر رو ببینین:

const runnable = {}
if (Math.random() < 0.0001) {
  runable.run()
} 

خب به نظر میاد باید به یه سری موارد گیر بده مثلا:

به runnable دقت کنین! هیچ وقت ازش استفاده نشده اون پایینیه یه n کمتر داره. حالا بدون استفاده از linter فقط موقع اجرای کد می فهمین که دو تا خطا دارین: یکی بی استفاده موندن runnable و دومی تعریف نشده بودن runable. در حالی که می دونیم فقط یه خطا داریم و اون هم چیزی نیست جز اشتباه کردن در تایپ runnable.

اما با استفاده از linter حین نوشتن کد بهتون گیر میده که داداش داری اشتباه می زنی و حواست رو جمع کن و اینا و خب این از لحاظ زمانی خیلی به صرفه تره.

حالا به عنوان مثال کد زیر به زبان جاوا اسکریپت رو به یه linter معروف تحویل بدیم و ببینیم چی برمیگردونه:

function sayHello(name){
    alert("Hello " + name);
}

name = "Douglas Crockford";
sayHello(name)

این گیر ها رو میده:

1) Expected one space between ')' and '{'.
function sayHello(name){

فاصله بین اینا رو رعایت کن داداچ.

2) Expected 'use strict' before 'alert'.
alert("Hello " + name);

وقتی alert استفاده می کنی قبلا باید 'use strict' اومده باشه.

3) Undeclared 'name'.
name = "Douglas Crockford";

پس Name رو چرا تعریف نکردی کسکم؟

4) Undeclared 'name'.
sayHello(name)

5) Expected ';' and instead saw '(end)'.
sayHello(name)

و اینکه طبق استاندارد باید سیمیکالن بذاری ته کد جاوا اسکریپتت. البته که بدون سیمیکالن هم ران میشه.

آهان یادم رفت بگم که اسم این linter معروف JSLint عه. ولی خب linter های زیادی داریم

مثلا برای جاوا اسکریپت اینا رو داریم:

 افزونه های ویژوال استودیو کد
افزونه های ویژوال استودیو کد


حالا هر lint یه سری قواعدی رو برای کد ها در نظر میگیره که برای فهمیدنش باید توی داکیومنت هاش رو نگاه بندازین.

مثلا همین الان برین صفحه ی https://github.com/standard/standard و استاندارد هاش رو ببینین.

و یه نکته هم راجع به اسم lint:

واژه Lint در اصل اسم یه برنامه بوده که برای تشخیص خطا تو کد به زبان C قبل کامپایل شدن به کار می رفته. یواش یواش اسمش شده یه چیزی مثل گوگل کردن که برای هر جستجویی تو اینترنت به کار میره، اینم برای هر ابزاری که برای تشخیص خطا و هشدار تو کد ها به کار میره.


منابع:

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.56.1841

https://medium.com/dailyjs/why-you-should-always-use-a-linter-and-or-pretty-formatter-bb5471115a76

https://stackoverflow.com/questions/8503559/what-is-linting