Modernizer Maven ปลั๊กอินตรวจจับการใช้ API แบบดั้งเดิมซึ่งรุ่น Java ที่ทันสมัยมาแทนที่ APIs ที่ทันสมัยเหล่านี้มักจะมีนักแสดงปลอดภัยและมีสำนวนมากกว่ามรดกที่เทียบเท่า ตัวอย่างเช่น Modernizer สามารถตรวจจับการใช้ Vector แทน ArrayList , String.getBytes(String) แทน String.getBytes(Charset) และ guava Objects.equal แทน java 7 Objects.equals การกำหนดค่าเริ่มต้นจะตรวจจับ API ดั้งเดิมกว่า 200 ตัวรวมถึงไลบรารีของบุคคลที่สามเช่น Apache Commons, Guava และ Joda-Time
ในการเรียกใช้ Modernizer ให้เพิ่มสิ่งต่อไปนี้ลงใน <plugins> stanza ใน pom.xml ของคุณจากนั้นเรียกใช้ mvn modernizer:modernizer :
< plugin >
< groupId >org.gaul</ groupId >
< artifactId >modernizer-maven-plugin</ artifactId >
< version >2.7.0</ version >
< configuration >
< javaVersion >8</ javaVersion >
</ configuration >
</ plugin > <configuration> stanza สามารถมีองค์ประกอบหลายอย่าง:
<javaVersion> ช่วยให้การละเมิดตามรุ่น Java เป้าหมายเช่น 8. ตัวอย่างเช่น Modernizer จะตรวจจับการใช้ Vector เป็นการละเมิดเมื่อกำหนดเป้าหมาย Java 1.2 แต่ไม่ใช่เมื่อกำหนดเป้าหมาย Java 1.1 พารามิเตอร์ที่ต้องการ<failOnViolations> เฟสล้มเหลวหาก Modernizer ตรวจจับการละเมิดใด ๆ ค่าเริ่มต้นเป็นจริง<includeTestClasses> เรียกใช้ Modernizer บนคลาสทดสอบ ค่าเริ่มต้นเป็นจริง<violationsFile> ไฟล์การละเมิดที่ผู้ใช้ระบุ ปิดใช้งานการตรวจสอบการละเมิดมาตรฐาน สามารถชี้ไปที่ ClassPath โดยใช้เส้นทางสัมบูรณ์เช่น classpath:/your/file.xml<violationsFiles> ไฟล์การละเมิดที่ผู้ใช้ระบุ ไฟล์หลังแทนที่การละเมิดจากอดีตรวมถึง violationsFile และการละเมิดเริ่มต้น สามารถชี้ไปที่ ClassPath โดยใช้เส้นทางสัมบูรณ์เช่น classpath:/your/file.xml<exclusionsFile> ปิดใช้งานการละเมิดที่ผู้ใช้ระบุ นี่คือไฟล์ข้อความที่มีการยกเว้นหนึ่งบรรทัดต่อบรรทัดในรูปแบบ javap: java/lang/String.getBytes:(Ljava/lang/String;)[B . เส้นที่ว่างเปล่าและบรรทัดเริ่มต้นด้วย # จะถูกละเว้น<exclusions> การละเมิดเพื่อปิดการใช้งาน การยกเว้นแต่ละครั้งควรอยู่ในรูปแบบ Javap: java/lang/String.getBytes:(Ljava/lang/String;)[B .<exclusionPatterns> รูปแบบการละเมิดเพื่อปิดใช้งานโดยใช้องค์ประกอบของเด็ก <exclusionPattern> การยกเว้นแต่ละครั้งควรเป็นนิพจน์ทั่วไปที่ตรงกับรูปแบบ Javap: java/lang/.* ของการละเมิด<ignorePackages> คำนำหน้าแพ็คเกจที่จะเพิกเฉยโดยระบุโดยใช้องค์ประกอบของ <ignorePackage> การระบุ foo.bar ต่อมาไม่สนใจ foo.bar.* , foo.bar.baz.* และอื่น ๆ<ignoreClassNamePatterns> ชื่อคลาสที่ผ่านการรับรองเต็มรูปแบบ (รวมแพ็คเกจ) เพื่อละเว้นโดยระบุโดยใช้ <ignoreClassNamePattern> องค์ประกอบเด็ก การยกเว้นแต่ละครั้งควรเป็นนิพจน์ทั่วไปที่ตรงกับแพ็คเกจและ/หรือคลาส แพ็คเกจจะเป็น / ไม่ แยก (รูปแบบของ ASM)<ignoreGeneratedClasses> คลาสที่มีคำอธิบายประกอบด้วยคำอธิบายประกอบที่มีนโยบายการเก็บรักษาเป็น runtime หรือ class และมีชื่อง่าย ๆ ที่มี "สร้าง" จะถูกละเว้น (หมายเหตุ: ทั้ง javax.annotation.generated และ javax.annotation.processing.generated มีแหล่งนโยบายการเก็บรักษา (aka ทิ้งโดยคอมไพเลอร์)) ในการเรียกใช้ Modernizer ในระหว่างขั้นตอนการตรวจสอบของคุณให้เพิ่มสิ่งต่อไปนี้ลงใน Modernizer <plugin> stanza ใน pom.xml ของคุณ:
< executions >
< execution >
< id >modernizer</ id >
< phase >verify</ phase >
< goals >
< goal >modernizer</ goal >
</ goals >
</ execution >
</ executions >ธงบรรทัดคำสั่งสามารถแทนที่การกำหนดค่า Modernizer และเอกสาร Modernizermojo ทั้งหมดเหล่านี้ ธงที่ใช้กันมากที่สุด:
-Dmodernizer.failOnViolations - เฟสล้มเหลวหากตรวจพบการละเมิดค่าเริ่มต้นเป็นจริง-Dmodernizer.skip - ข้ามการดำเนินการปลั๊กอิน, ค่าเริ่มต้นเป็นเท็จ ปลั๊กอินสามารถส่งออกการละเมิด modernizer ในหนึ่งในหลายรูปแบบซึ่งสามารถกำหนดค่าด้วย <configuration> stanza โดยใช้ <outputFormat>
รูปแบบที่ได้รับการสนับสนุนในปัจจุบันและตัวเลือกการกำหนดค่าที่เกี่ยวข้องมีการระบุไว้ด้านล่าง:
CONSOLE การละเมิดแต่ละครั้งโดยใช้เครื่องบันทึกของ Maven นี่คือรูปแบบ เริ่มต้น<violationLogLevel> ระบุระดับบันทึกของเครื่องบันทึก: error , warn , info หรือ debug ค่าเริ่มต้นคือ errorCODE_CLIMATE เขียนการละเมิดตามข้อมูลจำเพาะของ Code Climate Gitlab ใช้รูปแบบนี้เพื่อคุณภาพรหัสดังที่แสดงไว้ที่นี่<outputFile> พา ธ แบบเต็มไฟล์ที่จะส่งออกไป ค่าเริ่มต้นคือ ${project.build.directory}/code-quality.json<codeClimateSeverity> ความรุนแรงของการละเมิด modernizer สำหรับ codeclimate: INFO , MINOR , MAJOR , CRITICAL หรือ BLOCKER ค่าเริ่มต้นคือ MINOR รหัสสามารถระงับการละเมิดภายในชั้นเรียนหรือวิธีการผ่านคำอธิบายประกอบ ก่อนอื่นเพิ่มการพึ่งพาต่อไปนี้ใน pom.xml ของคุณ:
< dependencies >
< dependency >
< groupId >org.gaul</ groupId >
< artifactId >modernizer-maven-annotations</ artifactId >
< version >2.7.0</ version >
</ dependency >
</ dependencies > จากนั้นเพิ่ม @SuppressModernizer ลงในองค์ประกอบที่จะละเว้น:
import org . gaul . modernizer_maven_annotations . SuppressModernizer ;
public class Example {
@ SuppressModernizer
public static void method () { ... }
}javac -Xlint:deprecated ตรวจจับการใช้อินเทอร์เฟซด้วยคำอธิบายประกอบ @Deprecatedลิขสิทธิ์ (c) 2014-2022 Andrew Gaul
ได้รับอนุญาตภายใต้ใบอนุญาต Apache เวอร์ชัน 2.0