Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

การใช้งาน jdeprscan tool ใน Java 9

jdeprscan tool ใช้สำหรับ static analysis ของ classes, archives, และ folders เพื่อหา API elements ที่ถูก mark ว่า deprecated Tool นี้ตรวจจับเฉพาะ items ที่ mark deprecated ใน Java SE ไม่ตรวจจับใน libraries อื่น ทุก classes ที่คลาสที่ตรวจสอบ depend ต้องมีอยู่ตอน compiling หรือ running ถ้า ขาด dependent class tool จะแสดงรายการ unavailable classes พร้อม error: cannot find a class

Syntax

jdeprscan [options] {dir | jar | class}

คำสั่ง jdeprscan รองรับโดย module file jmods\jdk.jdeps.jmod ซึ่ง link เข้า lib\modules JImage file ใน JDK 9, 10, และ 11

Options สำหรับ jdeprscan tool

Options:
  --class-path PATH     Search path for dependent classes
  --for-removal         Limit to APIs deprecated for removal
  --full-version        Print full version string
  -?, -h, --help        Print help message
  -l, --list            List deprecated APIs (no scanning)
  --release 6|7|8|9|10|11  Java SE release for deprecated API set
  -v, --verbose         Verbose output
  --version             Print abbreviated version

การใช้งานทั่วไป

1. สแกน Class File

jdeprscan MyClass.class
jdeprscan --verbose MyClass.class

2. สแกน JAR File

jdeprscan myapp.jar
jdeprscan --for-removal myapp.jar  # เฉพาะที่ deprecated for removal

3. สแกน Directory (package hierarchy)


jdeprscan --class-path libs/* com/myapp

4. แสดง Deprecated APIs ทั้งหมดของ Release

jdeprscan --list --release 9
jdeprscan --list --release 11 --for-removal

5. ใช้กับ Module


jdeprscan --module-path mods --module com.myapp

ตัวอย่าง Output

C:\>jdeprscan --release 9 myapp.jar
myapp.jar -> com.myapp.LegacyClass
  Method deprecatedMethod()Ljava/lang/String; deprecated since 9
  Field deprecatedField deprecated since 1.1
  
C:\>jdeprscan --list --release 9
java.lang.Thread stop() deprecated since 1.2 forRemoval=true
java.lang.Thread suspend() deprecated since 1.2 forRemoval=true
java.lang.Thread resume() deprecated since 1.2 forRemoval=true
java.lang.System runFinalizersOnExit(boolean) deprecated since 1.2 forRemoval=true
java.security.Security getPolicy() deprecated since 9
...

ความแตกต่าง: Deprecated vs For Removal

ประเภท @Deprecated @Deprecated(forRemoval=true)
ความหมาย ไม่ควรใช้ แต่อาจคงอยู่ จะถูกลบใน version ถัดไป
jdeprscan default รวม รวม
jdeprscan --for-removal ไม่รวม รวมเฉพาะตัวนี้

ข้อจำกัด

  • Static analysis only - ไม่จับ dynamic/reflection usage
  • Java SE APIs เท่านั้น - ไม่รวม third-party libraries
  • ต้องมี dependent classes ครบ
  • ไม่วิเคราะห์ source code - เฉพาะ bytecode