کدنویسی میکنم نه به این خاطر که کسب درآمد کنم یا توسط دیگران تحسین بشم،فقط به این خاطر که کدنویسی باحاله.
آموزش نصب و راهنمای کاربری SonarQube با Maven
ابزار SonarQube (که ما آن را اختصاراً Sonar مینامیم) یک ابزار متن باز و رایگان برای بررسی کیفیت متن برنامهها (Static Code Analysis) است.
علاوه بر این، Sonar دارای یک سرور، واسط وب، دیتابیس و قابلیت اتصال به ابزارهای دیگر مانند Jenkins است که آن را نسبت به سایر ابزارهای این حوزه متمایز میکند.
برای آنکه Sonar را روی پروژه خود اجرا و با استفاده از آن متن برنامه های تیم خود را بررسی کنید روشهای مختلف وجود دارد. از جمله می توانید از پلاگین Eclipse یا پلاگین Maven استفاده نمایید. اگر از ابزارهای Continuous Intergration همچون Jenkinsاستفاده می کنید می توانید اجرای Sonar را به عهده آن بگذارید. در این صورت با هر Commit برنامه نویسان تحلیل کد صورت می گیرد و در صورت تشخیص باگ بلافاصله اعضای تیم مطلع می شوند.شما می توانید در کنسول مدیریتی پروژه خود را معرفی و نحوه تحلیل کد و گزارشدهی را مدیریت و سفارشی کنید. از جمله می توانید اولویت و اهمیت قواعد تعریف شده در Sonar را برای هر پروژه سفارشی کنید. Sonar بعد از تحلیل کد گزارشی از باگهای کشف شده، نتایج اجرای تست و میزان پوشش موارد آزمون (Test Coverage) ارائه می نماید. گزارشات Sonar روی پایگاه داده سرور آن ذخیره می شود و امکان مشاهده آن توسط مدیران، ناظران فنی و اعضای تیم وجود دارد.
در حال حاضر جهت نصب سونار نسخه 8.6 می بایست جاوا نسخه 11 بر روی سیستم نصب باشد و همچنین maven (تکنولوژی Build پروژه) نسخه 3 به بالا می بایست نصب شود.
برای نصب SonarQube ابتدا آخرین نسخه آن را دانلود کرده و با توجه به نوع سیتم عامل شروع به نصب می نماییم.در لینوکس می بایست از یک کاربر غیر از root استفاده شود.جهت ایجاد کاربر جدید در لینوکس از دستورات زیر استفاده می کنیم.
Useradd sonar
Passwd sonar
سپس فایل zip مربوط به آخرین نسخه سونار را در مسیر /opt/sonar کپی می کنیم و با کاربری sonar آن را Unzip می کنیم:
Unzip sonarqube
همچنین دسترسی های سونار را نیز بررسی می کنیم:
chown –R sonar.sonar *
chmod -R 777 *
به صورت پیش فرض برنامه سونار از پایگاه داده H2 به صورت Embed استفاده می کند اما در صورتی که بخواهیم از تمامی امکانات برنامه استفاده کنیم می بایست یک پایگاه داده(SqlServer/Oracle/PostgreSql) دیگر نصب نمود.پیشنهاد می شود که پایگاه داده بر روی یک سرور جدا از سرور سونار نصب شود.پس از نصب پایگاه داده یک Schema جدید ایجاد کرده و یک user با نام sonarqube بر روی آن ایجاد نموده و برای آن کاربری دسترسی Create,update,delete object برای آن Schema ایجاد شود.
پس از نصب پایگاه داده از مسیر $SONARQUBE-HOME/conf/sonar.properties اقدام به ویرایش و تنظیم پایگاه داده می کنیم.کافی است بخش مرتبط با پایگاه داده نصب شده را از حالت کامنت خارج کرده و بخش مرتبط با پایگاه داده H2را کامنت میکنیم.
اگر از پایگاه داده اوراکل استفاده شود می بایست jdbcDriver آن را در مسیر
$SONARQUBE-HOME/extensions/jdbc-driver/oracle
قرار دهیم.برای دیگر پایگاه داده ها به صورت پیش فرض درایورها وجود دارند.
همچنین می توانیم تنظیمات پیش فرض Elasticsearch را در مسیر زیر تغییر دهیم:
$SONARQUBE-HOME/conf/sonar.properties
sonar.path.data=/var/sonarqube/data
sonar.path.temp=/var/sonarqube/temp
نکته:کاربر ایجاد شده می بایست دسترسی به read/write این دو دایرکتوری را داشته باشد.
راه اندازی وب سرور
پورت پیش فرض سونار 9000 و Context path پیش فرض "/" می باشد که در مسیر زیر قابل ویرایش است:
$SONARQUBE-HOME/conf/sonar.properties:
sonar.web.host=192.0.0.1
sonar.web.port=80
sonar.web.context=/sonarqube
برای راه اندازی سرور دستور زیر را اجرا می کنیم:
- On Linux: bin/linux-x86-64/sonar.sh start
- On macOS: bin/macosx-universal-64/sonar.sh start
- On Windows: bin/windows-x86-64/StartSonar.bat
سپس در مرورگر در آدرس http://localhost:9000 با نام کاربری و کلمه عبور admin وارد سیستم می شویم.
پس از لاگین شدن به برنامه لیست پروژه هایی که قبلا در سونار ایجاد شده اند به همراه آمار مختصری از وضعیت پروژه نمایش داده می شود.در صورتی که نیاز باشد یک پروژه جدید را اضافه کنیم با کلیک بر روی add project و سپس manually را انتخاب می کنیم.در بخش projectKey یک نام منحصر به فرد به پروژه تخصیص می دهیم.در صورتی که از Maven استفاده می کنیم می بایست در این بخش از فرمت groupid:artifactid استفاده شود.
در بخش DisplayName یک نام دلخواه به پروژه اختصاص می دهیم و بر روی دکمه setup کلیک می کنیم.در صفحه بعد یک نام دلخواه جهت ایجاد Token وارد کرده و بر روی دکمه generate کلیک می کنیم و سپس بر روی continue کلیک می کنیم.
در صفحه بعد تکنولوژی ساخت پروژه (Maven) را انتخاب می کنیم.با انتخاب maven کد مربوط به آن در صفحه نمایش داده می شود که کافیست این کد را در مسیر سورس پروژه توسط Command اجرا کنیم.پس از اجرای دستور در صورتی که خطایی ایجاد نشود پروژه به سونار افزوده می شود و می توانیم از داده های استخراج شده آن استفاده کرد.
اطلاعات کلی که در این لیست نمایش داده می شود شامل موارد زیر می باشد:
- Bugs
- Vulnerabilities
- Hotspot Reviewed
- Code Smells
- Coverage
- Duplications
- Lines Of Code
در ادامه به توضیح قابلیت های برنامه و شرح کارکرد ابزار پرداخته می شود:
Issues:
در قسمت Issues لیست کامل تمام نتایج آنالیز که نیاز به بررسی دارند ارائه می گردد.
با توجه به حجم بالای تعداد Issue ها قابلیت فیلتر بر اساس آیتمهای متنوعی در سمت چپ برنامه وجود دارد که می توان با اعمال آنها فقط آیتم های مورد نیاز را نمایش داد.
با انتخاب هر Issue وارد جزئیات آن شده و نوع Issue به همراه راهکار برطرف کردن خطا و یا بهینه سازی آن ارائه می گردد.
Rules:
با انتخاب منوی Rules تمام قوانین Embeded سونار به تفکیک نمایش داده می شود با توجه به حجم بالای تعداد Rule ها قابلیت فیلتر بر اساس آیتمهای متنوعی در سمت چپ برنامه وجود دارد که می توان با اعمال آنها فقط آیتم های مورد نیاز را نمایش داد.
از قابلیت های بسیار کاربردی این ابزار امکان ایجاد Rule های جدید و یا Extend کردن Rule های موجود می باشد.
Quality Profiles:
در این بخش Profile پیش فرض وجود دارد که در اینجا نیز می توان آن را کپی یا Extend کرد یا یک Profile جدید ایجاد کرد و به هر profile می توان Rule هایی را اختصاص داد .
Quality Profiles:
Quality Gates:
شروط لازم برای پذیرش نسخه ارائه شده را در این قسمت تعیین می کنیم.
Administration :
تنظیمات و پیکربندی برنامه و همچنین مدیریت کاربری و اعمال مقادیر پیش فرض در بخش Administration انجام می شود.
در هر بخش از برنامه می توان از تنظیمات سمت چپ برنامه فیلترهای مورد نیاز برای محدود کردن دامنه جستجو را انجام داد.
مطلبی دیگر از این انتشارات
تست های غیر عملکردی نرم افزار (Non-Functional Test)
مطلبی دیگر از این انتشارات
امکانپذیر بودن یا نبودن کشف Backdoor و کدهای مخرب در نرم افزار
مطلبی دیگر از این انتشارات
High Availability یا HA چیست؟