GitInspector, Git-Score, CLOC and SrcStatJS: Generating Simple Reports From Git Repositories


اگر با git کار می کنید، گاهی می خواهید آماری از Repository و مشارکت افراد مختلف در آن داشته باشید. Github این کار را به بهترین شکل ممکن انجام می دهد. اما در مورد Repository  های خصوصی که روی Github قرار ندارد باید چه کار کنیم؟
موضوع وقتی جدیتر می شود که قرار باشد آخر هر هفته آماری از  وضعیت توسعه پروژه برای افراد تیم ارسال کنید و نمی خواهیم وقت زیادی را صرف سر و کله زدن با ابزارهای عریض و طویل مربوط به مدیریت پروژه های نرم افزاری کنید (درباره این موضوع -گزارش های آخر هفته ای- در پست دیگری مفصل صحبت خواهم کرد ).
در ادامه با تعدادی از ابزارهای مفید برای استخراج آمارهای جالب مربوط به پروژه های نرم افزاری آشنا می شویم. این ابزارها نه قویترین هستند، نه قدیمیترین و نه بهترین. فقط ابزارهایی هستند که وقتی در جست وجو ابزارهای کوچک و ساده برای استخراج آمار بودم با آنها بر خورد داشتم و از آنها استفاده می کنم.

GitInspector
Gitinspector نام یک ابزار مفید است برای تولید این گونه آمار است که با  python نوشته شده است و به راحتی قابل استفاده است. این ابزار خروجی HTML ، XML ، TXT ، XML تولید می کند و میزان جزییات خروجی بوسیله پارامترهای خط فرمان قابل تنظیم است.



کد این ابزار را می توانید از این مسیر دریافت کنید:
برای اجرا هم کافی است از الگوی دستوری زیر استفاده کنید:

python [gitinspector dir path]\gitinspector.py  [git repo. path] > git.html

مثلا برای اجرا روی یک repository نمونه در سیستم عامل ویندوز می توانید از دستور زیر استفاده کنید:

python.exe D:\gitinspector-0.3.1\gitinspector\gitinspector.py --grading --format=html D:\projects\testapp > git.html

با این دستور گزارش به صورت HTML و با جزئیات لازم برای گزارش پروژه درسی تولید می شود.

برای آشنایی بیشتر با پارامترهای ورودی هم می توانید به مستندات آن نگاهی بیندازید:


Git-Score
یکی دیگر از ابزارها git-score است. git-score هم با python نوشته شده است و ولی خروجی آن تنها در ترمینال نمایش داده می شود. اطلاعات خروجی این ابزار مختصرتر است.
git-score screenshot
برای استفاده از آن هم کافی است به دایرکتوری Repository بروید و git-score را اجرا کنید:

python git-score.py

CLOC
CLOC ابزاری است که با Perl نوشته شده است و کارش تشخیص انواع زبان ها برنامه نویسی استفاده شده در پروژه بر اساس نوع فایل ها و شمارش تعداد خطوط کامنت، خالی و کد است. یک نمونه از خروجی این ابزار به شکل زیر است:

      31 text files.
classified 31 files
      31 unique files.                              
       8 files ignored.

http://cloc.sourceforge.net v 1.60  T=0.20 s (117.7 files/s, 9643.4 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Objective C                     12            416            178           1033
C/C++ Header                    11             49             71            138
-------------------------------------------------------------------------------
SUM:                            23            465            249           1171
-------------------------------------------------------------------------------

برای استفاده از این ابزار می توانید پس از دریافت سورس کد آن از آدرس http://cloc.sourceforge.net، از دستوری شبیه این استفاده کنید:

perl cloc-1.60.pl [Project Directory]

SrcStatJS
پس از اینکه حدود سه هفته از این ابزارها برای استخراج آماری مختصر از Repository های پروژه ها استفاده کردم، تصمیم گرفتن ابزاری کوچک بنویسم که بخش از کارها را خودکار انجام دهد. حاصل این تلاش پروژه SrcStatJS است که روی گیت هاب قابل دسترسی است.
این ابزار با کمک  CLOC و git-score اطلاعاتی شامل مجموع تعداد خطوط هر پروژه و مشارکت هر فرد در هر Repository را چاپ می کند. سورس کد به زبان Nodejs است و از کدهای CLOC و git-score برای بخش اصلی کار استفاده می کنم.
 امیدوارم وقت کافی پیدا کنم تا این پروژه را کاملتر کنم و آخر این هفته برای تولید گزارش از این ابزار استفاده کنم.