على مر السنين ، قام فريق PVS-Studio بتطوير محلل ثابت بنفس الاسم. في هذه المرحلة ، يمثل المحلل حلاً برمجيًا معقدًا ، والذي يوفر تحليل لغات البرمجة ، مثل C و C ++ و C # و Java على أنظمة Windows و Linux و macOS. في الآونة الأخيرة ، انضمت لغة جافا إلى صفوف اللغات المدعومة. أثبت محلل PVS-Studio نفسه كأداة موثوق بها بين مطوري C ++ و C # في وقت ما ، في حين أن PVS-Studio لجمهور جافا لا يزال قادمًا جديدًا. كثيرون لم يسمعوا حتى بالمحلل ، والذين لم يكونوا على دراية بكل قدراته. لذلك ، أود في هذه المقالة تقديم PVS-Studio Java إليك ، والتحدث عن طرق تشغيله وقدراته.
نظرة عامة
يتكون محلل الشفرة الثابتة PVS-Studio Java من جزأين رئيسيين: النواة ، التي تجري التحليل ، والمكونات الإضافية للتكامل في أنظمة الإنشاء (Gradle ، Maven) و IDE (IntelliJ IDEA).
تحصل الإضافات على بنية المشروع (مجموعة من الملفات المصدر و classpath) ، ثم تنقل هذه المعلومات إلى مركز التحليل. بالإضافة إلى ذلك ، تعد المكونات الإضافية مسؤولة عن نشر النواة للتحليل - سيتم تحميلها تلقائيًا في الجولة الأولى.
من الممكن أيضًا تشغيل المحلل مباشرةً ، مع سرد المصادر و classpath.
يمكن إجراء التحليل إذا كان الكمبيوتر يلبي متطلبات النظام التالية:
نظام التشغيل: ويندوز ، لينكس ، ماك.
الحد الأدنى المطلوب لإصدار Java لتشغيل المحلل باستخدام: Java 8 (64-bit). ملاحظة: يمكن للمشروع الجاري تحليله استخدام أي إصدار Java ؛
الحد الأدنى من إصدار IntelliJ IDEA: 2017.2.
البرنامج المساعد ل maven
إذا كان المشروع الذي تعمل عليه يعتمد على نظام إنشاء Maven ، فيمكنك استخدام البرنامج المساعد pvsstudio-maven-plugin. للقيام بذلك ، تحتاج إلى إضافة ما يلي إلى ملف pom.xml:
<pluginRepositories> <pluginRepository> <id>pvsstudio-maven-repo</id> <url>http:
قبل تشغيل التحليل ، تحتاج إلى إدخال بيانات الترخيص:
mvn pvsstudio:pvsCredentials "-Dpvsstudio.username=USR" "-Dpvsstudio.serial=KEY"
بعد ذلك ، سيتم حفظ معلومات الترخيص في
٪ APPDATA٪ / PVS-Studio-Java / PVS-Studio.lic على Windows أو في
~ / .config / PVS-Studio-Java / PVS-Studio.lic على
الماكنتوش ولينكس.
بعد ذلك يمكنك تشغيل التحليل:
$ mvn pvsstudio:pvsAnalyze
في الكتلة
<analyzer> يمكنك تكوين المحلل. يمكن الاطلاع على قائمة بجميع الإعدادات
هنا .
البرنامج المساعد لالممهد
إذا كان المشروع الذي تعمل عليه يعتمد على نظام بناء Gradle ، فيمكنك استخدام البرنامج المساعد pvsstudio-gradle-plugin. للقيام بذلك ، تحتاج إلى إضافة ما يلي في ملف build.gradle:
buildscript { repositories { mavenCentral() maven { url uri('http://files.viva64.com/java/pvsstudio-maven-repository/') } } dependencies { classpath group: 'com.pvsstudio', name: 'pvsstudio-gradle-plugin', version: '{VERSION_PVS_JAVA}' } }
apply plugin: com.pvsstudio.PvsStudioGradlePlugin pvsstudio { outputType = 'text' outputFile = 'path/to/output.txt' .... }
قبل تشغيل التحليل ، تحتاج إلى إدخال بيانات الترخيص:
./gradlew pvsCredentials "-Ppvsstudio.username=USR" "-Ppvsstudio.serial=KEY"
بعد ذلك ، سيتم حفظ معلومات الترخيص في
٪ APPDATA٪ / PVS-Studio-Java / PVS-Studio.lic على نظام التشغيل Windows OS أو في
~ / .config / PVS-Studio-Java / PVS-Studio.lic على
macOS و Linux .
بعد ذلك يمكنك تشغيل التحليل:
$ ./gradlew pvsAnalyze
في كتلة "pvsstudio" ، يمكنك تكوين المحلل. يمكن الاطلاع على قائمة بجميع الإعدادات
هنا .
البرنامج المساعد ل IntelliJ IDEA
يمكن استخدام محلل Java PVS-Studio أيضًا كبرنامج إضافي لبرنامج IntelliJ IDEA. في هذه الحالة ، يتم إجراء تحليل بنية المشروع عن طريق IDE هذا ويوفر البرنامج المساعد واجهة رسومية ملائمة للعمل مع المحلل.
يمكن تثبيت البرنامج المساعد PVS-Studio لـ IDEA:
بمجرد تثبيت المكوّن الإضافي ، ستحتاج إلى إدخال بيانات الترخيص:
1) تحليل -> PVS- ستوديو -> الإعدادات
2) علامة التبويب التسجيل:
يمكنك بعد ذلك تشغيل تحليل المشروع الحالي:
ترخيص
تم تصميم محلل PVS-Studio لفرق من المطورين ويمثل أساسًا منتج B2B خاصًا. للتجول بكل قدرات المحلل ، يمكنك
طلب مفتاح تجريبي .
إذا كنت تقوم بتطوير مشاريع مفتوحة ، أو على سبيل المثال ، أنت طالب ، فبإمكانك استخدام أحد خيارات الترخيص المجانية لبرنامج PVS-Studio.
ايجابيات كاذبة قمع
لمحاربة الإيجابيات الخاطئة ، يقدم المحلل مجموعة من الآليات المختلفة.
1. استخدام التعليقات الخاصة في الكود:
void f() { int x = 01000;
2. باستخدام
ملف قمع .
3. استخدام التعليقات التوضيحيةSuppressWarnings (....).
يدرك المحلل التعليقات التوضيحية وقد لا يصدر تحذيرات على الكود الذي تم تعليمه بالفعل. على سبيل المثال:
@SuppressWarnings("OctalInteger") void f() { int x = 01000; }
استنتاج
ما نظرنا إليه للتو ليس سوى جزء صغير مما يمكن قوله. على سبيل المثال ، من الممكن أيضًا الاندماج مع SonarQube والمزيد. PVS-Studio Java هو اتجاه جديد يتم تطويره بنشاط:
- تم إضافة وظائف جديدة ،
- قدرات تتوسع ،
- يتم إضافة وتحسين قواعد التشخيص ،
- وأكثر من ذلك بكثير.
لاستكشاف قدرات المحلل الحالية بشكل كامل وعدم تفويت ظهور قدرات جديدة في المستقبل ، اتبع
مدونة PVS-Studio.