
الدعم المعرض للخطأ هو امتداد مضغوط للنزهات لخطأ Google المعرضة. ويهدف إلى تحسين جودة الكود ، والتركيز على الصيانة ، والاتساق وتجنب المزالق الشائعة.
خطأ عرضي هو أداة تحليل ثابت لـ Java التي تلتقط أخطاء البرمجة الشائعة في وقت الترجمة.
لمعرفة المزيد حول الخطأ المعرض (الدعم) ، وكيف يمكنك البدء في استخدام خطأ في الممارسة ، وكيف نستخدمه في Picnic ، شاهد المؤتمر Autolective Bugs مع خطأ معرض في الممارسة العملية . ضع في اعتبارك أيضًا التحقق من Post Post Pick Loves Error Proun: إنتاج رمز Java عالي الجودة ومتسق .
البدء • تطوير خطأ معرض للخطأ • كيف يعمل • المساهمة
تم تصميم هذه المكتبة فوق الخطأ المعرضة للخطأ. لاستخدامه ، اقرأ دليل التثبيت لـ Maven أو Gradle أدناه. تتطلب المكتبة أن يتم تنفيذ بناءك باستخدام JDK 17 أو أعلى ، ولكنه يدعم أن بناء الإصدارات القديمة من Java.
أولاً ، اتبع دليل تثبيت Error Prone.
maven-compiler-plugin ذلك ، قم بتحرير ملف pom.xml الخاص بك لإضافة وحدات دعم معرضة للخطأ أو annotationProcessorPaths
< build >
< pluginManagement >
< plugins >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-compiler-plugin</ artifactId >
<!-- Prefer using the latest release. -->
< version >3.12.0</ version >
< configuration >
< annotationProcessorPaths >
<!-- Error Prone itself. -->
< path >
< groupId >com.google.errorprone</ groupId >
< artifactId >error_prone_core</ artifactId >
< version >${error-prone.version}</ version >
</ path >
<!-- Error Prone Support's additional bug checkers. -->
< path >
< groupId >tech.picnic.error-prone-support</ groupId >
< artifactId >error-prone-contrib</ artifactId >
< version >${error-prone-support.version}</ version >
</ path >
<!-- Error Prone Support's Refaster rules. -->
< path >
< groupId >tech.picnic.error-prone-support</ groupId >
< artifactId >refaster-runner</ artifactId >
< version >${error-prone-support.version}</ version >
</ path >
</ annotationProcessorPaths >
< compilerArgs >
< arg >
-Xplugin:ErrorProne
<!-- Add other Error Prone flags here. See
https://errorprone.info/docs/flags. -->
</ arg >
< arg >-XDcompilePolicy=simple</ arg >
</ compilerArgs >
<!-- Enable this if you'd like to fail your build upon warnings. -->
<!-- <failOnWarning>true</failOnWarning> -->
</ configuration >
</ plugin >
</ plugins >
</ pluginManagement >
</ build > أولاً ، اتبع دليل تثبيت gradle-errorprone-plugin .
بعد ذلك ، قم بتحرير ملف build.gradle لإضافة وحدات دعم عرضية واحدة أو أكثر:
dependencies {
// Error Prone itself.
errorprone( " com.google.errorprone:error_prone_core: ${ errorProneVersion } " )
// Error Prone Support's additional bug checkers.
errorprone( " tech.picnic.error-prone-support:error-prone-contrib: ${ errorProneSupportVersion } " )
// Error Prone Support's Refaster rules.
errorprone( " tech.picnic.error-prone-support:refaster-runner: ${ errorProneSupportVersion } " )
}
tasks . withType( JavaCompile ) . configureEach {
options . errorprone . disableWarningsInGeneratedCode = true
// Add other Error Prone flags here. See:
// - https://github.com/tbroyer/gradle-errorprone-plugin#configuration
// - https://errorprone.info/docs/flags
}النظر في رمز المثال التالي:
import com . google . common . collect . ImmutableSet ;
import java . math . BigDecimal ;
public class Example {
static BigDecimal getNumber () {
return BigDecimal . valueOf ( 0 );
}
public ImmutableSet < Integer > getSet () {
ImmutableSet < Integer > set = ImmutableSet . of ( 1 );
return ImmutableSet . copyOf ( set );
}
}إذا كان التثبيت ناجحًا ، فيجب أن ينتج عن بناء الكود أعلاه مع Maven تحذيرتين للمترجم:
$ mvn clean install
...
[INFO] Example.java:[9,34] [Refaster Rule] BigDecimalRules.BigDecimalZero: Refactoring opportunity
(see https://error-prone.picnic.tech/refasterrules/BigDecimalRules#BigDecimalZero)
Did you mean ' return BigDecimal.ZERO; ' ?
...
[WARNING] Example.java:[13,35] [IdentityConversion] This method invocation appears redundant ; remove it or suppress this warning and add a comment explaining its purpose
(see https://error-prone.picnic.tech/bugpatterns/IdentityConversion)
Did you mean ' return set; ' or ' @SuppressWarnings("IdentityConversion") public ImmutableSet<Integer> getSet() { ' ?
...شيئان يركلان هنا:
BugChecker الذي يعلق تحويلات الهوية غير الضرورية.BigDecimal.valueOf(0) و new BigDecimal(0) إلى BigDecimal.ZERO .تأكد من مراجعة جميع عمليات فحص الأخطاء وقواعد المرفر.
هذا مشروع Maven ، لذا فإن تشغيل mvn clean install يؤدي بنية نظيفة كاملة وتثبيت المكتبة على مستودع Maven المحلي.
بمجرد إجراء التغييرات ، قد يفشل البناء بسبب تحذير أو خطأ ينبعث من تحليل التعليمات البرمجية الثابتة. تتيح لك الأعلام والأوامر المدرجة أدناه قمع أو (في مجموعة فرعية كبيرة من الحالات) تلقائيًا تصلح هذه الحالات تلقائيًا. تأكد من التحقق من الخيارات المتاحة بعناية ، لأن هذا يمكن أن يوفر لك كميات كبيرة من وقت التطوير!
معلمات بناء Maven ذات الصلة:
-Dverification.warn يجعل التحذيرات والأخطاء المنبعثة من مختلف الإضافات ومترجم Java غير المميت ، حيثما أمكن.-Dverification.skip يعطل العديد من الإضافات غير الضرورية وتجميع الرمز بأقل عمليات فحص (أي دون وجود اختبارات للخطأ ، وما إلى ذلك).-Dversion.error-prone=some-version بتشغيل البناء باستخدام الإصدار المحدد من الخطأ المعرض. هذا مفيد على سبيل المثال عند اختبار لقطة معرضة للخطأ.-Perror-prone-fork البناء باستخدام شوكة خطأ Picnic ، المستضافة على Jitpack. يحتوي هذا الشوكة عمومًا على بعض التغييرات أعلى الإصدار الأخير من الأخطاء المعرضة للخطأ.-Pself-check النفس الشيكات المحددة بواسطة هذا المشروع ضد نفسه. في انتظار إصدار Google/Error-Prone#3301 ، يجب استخدام هذه العلامة حاليًا في تركيبة مع -Perror-prone-fork .أوامر أخرى ذات صلة للغاية:
mvn fmt:format تنسيق الكود باستخدام google-java-format ../run-full-build.sh (فكر في تشغيل هذا قبل فتح طلب سحب ، حيث تقوم شيكات العلاقات العامة أيضًا بهذا التحقق من الصحة.)./apply-error-prone-suggestions.sh قبل تشغيل هذا الأمر ، تأكد من تثبيت المشروع ( mvn clean install ) وتأكد من أن دليل العمل الحالي لا يحتوي على تغييرات غير مصنفة أو غير ملائمة../run-branch-mutation-tests.sh يمكن مراجعة النتائج عن طريق فتح ملفات target/pit-reports/index.html . يمكن للمرء استخدام ./run-mutation-tests.sh لمزيد من المعلومات ، تحقق من البرنامج المساعد Pit Maven.عند إجراء اختبارات المشروع في فكرة Intellij ، قد ترى الخطأ التالي:
java: exporting a package from system module jdk.compiler is not allowed with --release
إذا حدث هذا ، فانتقل إلى الإعدادات -> البناء والتنفيذ والنشر -> برنامج التحويل البرمجي -> برنامج التحويل البرمجي Java وإلغاء تحديد خيار استخدام الخيار " -إعادة إطلاق" للمشترك (Java 9 وما بعده) . انظر IDEA-288052 للحصول على التفاصيل.
يوفر هذا المشروع تطبيقات BugChecker إضافية.
هل ترغب في الإبلاغ أو إصلاح خطأ أو اقتراح أو إضافة ميزة جديدة ، أو تحسين الوثائق؟ هذا رائع! يرجى قراءة إرشادات المساهمة لدينا.
إذا كنت ترغب في الإبلاغ عن ثغرة أمنية ، فيرجى القيام بذلك من خلال قناة خاصة ؛ يرجى الاطلاع على سياسة الأمن لدينا للحصول على التفاصيل.