برنامه نویسی

گزارش پوشش TypeScript خود را دریافت کنید

این چیزی است که من مدت زیادی است که قصد انجام آن را داشتم –
ببینید، شما یک پروژه را با استفاده از TypeScript (TS) شروع می کنید یا شاید یک پایه کد موجود را به TS منتقل می کنید، و می خواهید بدانید که پروژه شما چقدر خوب “تایپ” شده است، بنابراین می توانید مطمئن باشید که وقتی برای بازسازی کد خود، TS دارید تا از شما محافظت کند (البته در کنار آزمایش، درست است؟ 😉).

چطوری این کار را انجام میدهی؟

معلوم شد ابزارهایی برای آن وجود دارد و یکی از آنها به نام تایپ اسکریپت-پوشش-گزارش توسط الکس کانسا است و من اکنون آن را امتحان می کنم و در monorepo Pedalboard خود پیاده سازی می کنم.

بیا شروع کنیم!


سلام! برای محتوای بیشتر مانند آنچه می خواهید بخوانید، بررسی کنید @mattibarzeev در توییتر 🍻


من با پیاده سازی آن در یک بسته واحد در مونورپوی خود شروع خواهم کرد و ارزشی را که از آن به دست می‌آورم می‌بینم. بسته ای که من انتخاب می کنم، stylelint-plugin-craftsmanlint است که یک پلاگین stylelint است (همانطور که از نامش پیداست، نمی دانم چرا این را نوشتم… 😅)

با دستورالعمل های صفحه بسته پوشش npm شروع کنید:

yarn add -D typescript-coverage-report
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس اسکریپت npm را به آن اضافه می کنیم package.json فایل تا بتوانیم پوشش را اجرا کنیم:

"scripts": {
       ...
       "ts-coverage": "typescript-coverage-report"
   },

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا بیایید آن را اجرا کنیم

yarn ts-coverage
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سلام، بد نیست – در اینجا صفحه پوشش خلاصه برای بسته من است:

توضیحات تصویر

و همچنین یک گزارش HTML ایجاد کرد:

توضیحات تصویر

قرار دادن jest.config.ts فایل را برای یک ثانیه کنار بگذارید، می بینم که تست من در آنجا پوشش کمی دارد. بیایید به گزارش (بخشی از آن) در تصویر زیر دقت کنیم:

توضیحات تصویر

خوب، خوب است، من می توانم ببینم که کدام نوع ها گم شده اند، اما نشان دادن ماوس روی آنها به من نمی گوید که مشکل دقیقاً چیست (مانند پوشش تست واحد جست و خیز)، اما حدس می زنم می توانید بگویید که مشکل این است که “تو نمی کنی” یک نوع برای این وجود ندارد، درست است؟.

فقط برای اینکه مطمئن شوم همه اینها کار می کند، سعی می کنم یکی از مشکلات را برطرف کنم و دوباره پوشش را اجرا کنم تا مطمئن شوم که دیگر وجود ندارد – چیست؟ require بیانیه برای lint انجام دادن آنجا؟ آیا من این کار را کردم؟ اوه، بیایید آن را به یک واردات ESM تبدیل کنیم و دوباره تست های واحد را اجرا کنیم تا مطمئن شویم که همه هنوز کار می کنند:

// const {lint} = require('stylelint');
import {lint} from 'stylelint';
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بله، همه آنها هنوز می گذرند. حالا بیایید ابزار پوشش TS را اجرا کنیم تا ببینیم آیا تأثیری روی آن داشته است یا خیر، و… بله! وای، ما اکنون در پوشش 98.97٪ هستیم:

توضیحات تصویر

اما … ما هنوز یک مشکل در آنجا داریم. کجاست؟

توضیحات تصویر

هوم… جالب jsonRule نوع آن را ندارد. تثبیت:

const jsonRule: ConfigRules = JSON.parse(`{
…      
}`);


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و الان 100 درصد پوشش داریم. سرد!

از آن زمان jest.config.ts فایل، فکر می کنم با معرفی a می توانیم آن را نادیده بگیریم typeCoverage ویژگی موجود در فایل package.json ما (اگرچه من علاقه زیادی به اضافه کردن تنظیمات در فایل package.json دارم. من یک فایل .rc را بسیار ترجیح می دهم):

"typeCoverage": {
       "ignoreFiles": [
           "jest.config.ts"
       ]
   },
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون گزارش پوشش کد TS ما خوب است و به شکل زیر است:

توضیحات تصویر

خوبه 🙂

All-in-all typescript-coverage-report ابزاری بسیار جالب برای فهمیدن اینکه پروژه شما چقدر خوب “تایپ شده” به نظر می رسد. می‌توان آن را به‌عنوان یک قلاب commit یا حتی برخی از بررسی‌کننده‌های کد به عنوان بخشی از اقدامات GitHub شما ادغام کرد (هوم… این یک ایده زیبا برای پست بعدی من است 😉).

می توانید کل کد را در monorepo Pedalboard بررسی کنید.


سلام! برای محتوای بیشتر مانند آنچه که اخیراً خواندید، بررسی کنید @mattibarzeev در توییتر 🍻

عکس از Fallon Michael در Unsplash

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا