Skip to main content

SonarQube

ابزار SonarQube پلتفرمی برای بررسی پیوسته‌ی کیفیت کد است که با استفاده از تحلیل ایستا (Static Analysis) و قواعد متنوع از پیش آماده‌شده، امکان شناسایی خطاها را روی بیش از ۲۰ زبان برنامه‌نویسی ارائه می‌دهد. سونارکیوب گزارشهایی در زمینه‌ی کدهای تکراری (duplicated code)، استانداردهای کدنویسی، یونیت تست‌ها، code coverage، پیچیدگی کد (code complexity)، خطاها و پیشنهادهای امنیتی به شما ارائه می‌دهد. استفاده از سرویس‌های تحلیل کد ایستا منجر به جلوگیری از بروز خطا در محیطهای عملیاتی و افزایش کیفیت کدها و دانش برنامه‌نویسان شما می‌شود.

برای آشنایی بیشتر با این نرم‌افزار به سایت SonarQube و مستندات SonarQube مراجعه کنید.

ساخت

برای ساخت SonarQube ابتدا در بخش ساخت اپ، گزینه‌ی "داکر کامپوز" را انتخاب کنید و محتوای زیر را (با تغییر مقدار password) وارد کنید:

version: "3.7"
services:
postgres:
image: postgres:13
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: password
ports:
- 5432:5432
volumes:
- /data:/var/lib/postgresql/data
sonarqube:
image: sonarqube:lts-community
environment:
SONAR_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: password
ports:
- 9000:9000
volumes:
- /data:/opt/sonarqube/data

در مراحل بعدی با انتخاب منابع و دیتاسنتر دلخواه اپهای postgres و sonarqube را بسازید. برای بالا آمدن و اجرای مناسب سونارکیوب، حداقل ۲ گیگ رم را به آن اختصاص دهید. برای اپ sonarqube می‌توانید از تب «آدرس دامنه» دامنه‌ی رایگانی اختصاص دهید تا از آن طریق به سونارکیوب وصل شوید.

اتصال

پس از ساخته شدن و لود کامل اپ (که برای بار اول قدری زمان‌بر است) از طریق آدرس دامنه‌ای که بالا تنظیم کرده‌اید به سونارکیوب وصل شوید و با یوزرنیم و پسورد admin وارد برنامه شوید. بعد از اولین لاگین، باید پسورد را به مقداری مناسب تغییر دهید.

اتصال به Gitlab CI

امکان استفاده از سونارکیوب در چرخه‌ی CI/CD برای تحلیل پیوسته‌ی کدها به سادگی وجود دارد. در این قسمت برای نمونه، نحوه‌ی استفاده از SonarQube را در Gitlab CI نشان می‌دهیم. از این قابلیت برای اتصال Gitlab های اختصاصی یا هم‌گیت می‌توان استفاده کرد. ابتدا باید از قسمت Administration > Configuration > ALM Integrations، بعد از ساخت یک Personal Access Token در گیتلب، یک اینتگریشن جدید اضافه کنید:

به جزئیات نحوه‌ی ساخت و دسترسی‌های توکن گیتلب در همین صفحه اشاره شده است. در مرحله‌ی بعد باید یک پروژه‌ی جدید از لیست ریپوهای موجود در گیتلب (From Gitlab) بسازید.

بعد از انتخاب پروژه و کلیک روی setup در صفحه‌ی زیر گزینه‌ی «With Gitlab CI» را انتخاب کنید.

در مرحله‌ی بعد با انتخاب نوع زبان برنامه‌نویسی،‌ محتوای فایل sonar-project.properties که باید در ریپو اضافه کنید، به شما نمایش داده می‌شود. از این فایل برای تغییر تنظیمات مربوط به بررسی کد توسط سونارکیوب استفاده کنید.

در ادامه باید مقدار دو متغیر SONAR_TOKEN و SONAR_HOST_URL را طبق راهنمایی‌های بیان شده، در تنظیمات ci/cd ریپوی گیتلب انجام بدهید:

در انتها باید محتوای نمایش داده‌شده را در فایل .gitlab-ci.yml در ریپو ذخیره کنید:

می‌توانید محتوای این job مثلا قسمت only: - master را به شکل دلخواه تغییر دهید. بعد از انجام این کارها با هر بار push کردن در ریپو، فرآیند بررسی کد و ارسال نتیجه به سرور سونارکیوب انجام می‌شود و از طریق واسط کاربری سونارکیوب می‌توانید گزارش‌ها و تحلیل‌های مربوط به کد را مشاهده کنید.

در صورتی که نیاز به نصب گیتلب رانر دارید، می‌توانید به سادگی از طریق کنسول هم‌روش یک رانر بسازید. همچنین در صورت استفاده از هم‌گیت با وجود رانر اشتراکی، امکان استفاده رایگان از آن برای تحلیل کد توسط سونارکیوب وجود دارد.