آموزش نصب و راهنمای کاربری 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 sonarPasswd 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.propertiessonar.path.data=/var/sonarqube/datasonar.path.temp=/var/sonarqube/tempنکته:کاربر ایجاد شده می بایست دسترسی به read/write این دو دایرکتوری را داشته باشد.راه اندازی وب سرورپورت پیش فرض سونار 9000 و Context path پیش فرض "/" می باشد که در مسیر زیر قابل ویرایش است:$SONARQUBE-HOME/conf/sonar.properties:sonar.web.host=192.0.0.1sonar.web.port=80sonar.web.context=/sonarqubeبرای راه اندازی سرور دستور زیر را اجرا می کنیم:On Linux: bin/linux-x86-64/sonar.sh startOn macOS: bin/macosx-universal-64/sonar.sh startOn 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 های موجود می باشد.RulesQuality Profiles:در این بخش Profile پیش فرض وجود دارد که در اینجا نیز می توان آن را کپی یا Extend کرد یا یک Profile جدید ایجاد کرد و به هر profile می توان Rule هایی را اختصاص داد .Quality Profiles:Quality Gates:شروط لازم برای پذیرش نسخه ارائه شده را در این قسمت تعیین می کنیم.Quality Profiles Administration :تنظیمات و پیکربندی برنامه و همچنین مدیریت کاربری و اعمال مقادیر پیش فرض در بخش Administration انجام می شود.Administrationدر هر بخش از برنامه می توان از تنظیمات سمت چپ برنامه فیلترهای مورد نیاز برای محدود کردن دامنه جستجو را انجام داد.Filter