دسته Archives: برنامه نویسی

معرفی ابزار آنالیز و بررسی کد ها| code analysis tool

به نام دانای بر حق

مقدمه

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

گاهی اوقات این ابزار شامل آنالیز ایستا static و برخی اوقات آنالیز dynamic یا پویا می باشند که به آنها میپردازیم. ما قصد داریم تا در این مورد ابزار های به روز و متعددی که قالبا متن بازی یا همان اوپن سورس میباشند به تفکیک معرفی کنیم و شیوه عملکرد ، رویکرد و نحوه نصب و کار با ابزار های آنالیز و ارزیابی کد ها در سیستم عامل لینوکس توزیع Ubuntu با هم بررسی میکنیم.

 

  • CLOC

این نرم فزار از نوع آنالیز ایستا کد می باشد که برای شمارش بلاک های کد، تعداد خطوط و تعداد توضیحات (comments) نوشته شده در سورس کدها مورد استفاده قرار می  گیرد. ابزاری بسیار دقیق است و فایل های تکراری را نیز نادیده میگیرد و سرعت قابل توجهی دارد با تفکیک زبان های برنامه نویسی بسیار تا کنون 159 زبان برنامه نویسی به فهرست زیر:

 

این نرم افزار به شکل زیر نصب میکند:

 

 

نحوه استفاده:

نمونه خروجی کد:

اطلاعات بیشتر

آموزش ریجکس بخش اول:

ریجکس یا عبارات با قاعده

مفهوم عبارات با قاعده

اگر بخواهیم یک تعریف مختصر از عبارات با قاعده یا Regular Expressionsو به اختصار Regex)) داشته باشیم روش ها و قواعدی هستند که برای استخراج یا بررسی وجود قسمت یا توالی خاصی از یک مقدار (عددی، متنی ، الگو و… به کار می روند(، در واقع این قواعد بر مبنای قوانین خاصی تنظیم میشوند و بخش بخصوصی از یک متن یا عدد و… را با توجه به تنظیمات ما استخراج می کنند که در محاسبات دقیق و پیچیده بسیار کاربرد خواهد داشت.نکته: استفاده از عبارات با قاعده معمولا در چارچوب های مشخصی که توانایی پردازش آنها را داشته باشند انجام می شود، به طور مثال در توابع خاص، دستورات htaccess، قسمت جستجوی برنامه هایی که از این قواعد پشتیبانی می کنند و…؛ به عبارت دیگر صرف قرار دادن مستقیم این قواعد در کدنویسی نتیجه خاصی ندارد. عبارات منظم (Regular Expressions) وسیله ای را برای برنامه نویسان فراهم می کنند که بتوان به کمک آنها عبارات ، کلمه ها و الگوها ی مورد نظر را در یک رشته متنی (String) پیدا کرد.
اصل Regular Expressions بر روی نظریه ماشینها و نظریه زبانهای صوری تکیه دارد .
Regular Expressions محدود به یک زبان خاص نیست و اکثر زبانهای برنامه نویسی این امکان را درون خود قرار داده اند نظیر #javascript ,Perl, Ruby, TCL, Delphi, php, c java, و …. عبارات منظم توسط یک پردازنده که درون زبان برنامه نویسی وجود دارد تفسیر (interpret) می شوند.عبارات منظم استفاده های زیادی در برنامه های کاربردی مختلف دارد . توسط بسیاری از ویرایشگرهای متنی (Text Editor)برای انجام اعمال مختلف بر روی رشته ها مورد استفاده قرار می گیرد

عبارات با قاعده چگونه نوشته می شوند؟

پس از آشنایی با مفهوم Regular Expressions، سوالی که به ذهن می رسد این است که عبارات با قاعده چگونه نوشته می شوند؟ در پاسخ باید گفت که دستورات در این روش از طریق توالی علامت ها، کلمات، حروف یا کاراکترهای خاصی (مانند [] () + \ *? | , w \W\ 0-9 a-z و…) که هر کدام مفهوم ویژه ای دارند، تعریف می شوند، در واقع از کنار هم قرار گرفتن این علامت ها، دستور ویژه ای شکل گرفته و قسمت خاصی از رشته مورد نظر استخراج یا بررسی می شود، چند مثال کاربردی:

. :یک کاراکتر بجز \n
+ :حداقل یک تکرار عبارت یا کاراکتر قبل از خود است
* : هر تعداد تکرار یا بدون تکرار عبارت یا کاراکتر قبل از خود است
? : اگر پشت عبارتی قرار بگیرد یعنی اینکه 0 یا 1 تکرار عبارت یا کاراکتر قبل از خود است
^ :ایا متن با الگوی ما شروع میشود اگر داخل [] قرار گیرد به معنی بجز میباشد
$ :ایا متن با الگوی ما پایان می یابد یا پایان یک عبارت
i :ریجکس به حروف بزرگ و کوچک حساس است برای از بین بردن این حساسیت از i استفاده میکنیم
مثال:
“/ABC/i”
\d :یک عدد
\D:یک کاراکتر غیر عددی
\w :یک کاراکتر یا کلمه
\W :یک کاراکتر غیر حرفی
\s :یک اسپیس
\S :یک کاراکتر عیر از اسپیس
\b :ابتدا یا انتهای کلمه
\B :غیر از ابتدا یا انتهای متن
\n :خط جدید
\r :انتهای خط
[] :تعریف الگو برای یک کاراکتر
() :تعریف الگو و جداسازی الگوها
{} :تعداد تکرار
{3}:3 بار تکرار
{1,5}:حداقل 1 و حداکثر 5 بار تکرار
{,8}:حداکثر 8 بار تکرار
:حداقل 4 بار تکرار{4,}
– :تعریف محدوده الگو
\ :غیر فعال کردن کاراکترهای معنی دار در الگو
| :انتخاب یا در الگو