ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

java.lang.Object
com.android.tradefed.config.OptionSetter
com.android.tradefed.config.ArgsOptionParser


เติมฟิลด์ Option จากอาร์กิวเมนต์บรรทัดคำสั่งที่แยกวิเคราะห์

สตริงใน String[] ที่ส่งผ่านจะถูกแยกวิเคราะห์จากซ้ายไปขวา แต่ละสตริงถูกจัดประเภทเป็นตัวเลือกแบบสั้น (เช่น "-v") ตัวเลือกแบบยาว (เช่น "--verbose") อาร์กิวเมนต์ของตัวเลือก (เช่น "out.txt" ใน "-f out.txt) ") หรืออาร์กิวเมนต์ตำแหน่งที่ไม่ใช่ตัวเลือก

อาร์กิวเมนต์ตัวเลือกแต่ละรายการต้องแมปกับฟิลด์ Option ตั้งแต่หนึ่งรายการขึ้นไป ตัวเลือกแบบยาวจะจับคู่กับชื่อ Option และตัวเลือกแบบสั้นจะจับคู่กับชื่อแบบสั้น Option ชื่อตัวเลือกแต่ละรายการและชื่อย่อของตัวเลือกจะต้องไม่ซ้ำกันโดยคำนึงถึงฟิลด์ Option อื่นๆ ทั้งหมดภายในออบเจ็กต์เดียวกัน

อาร์กิวเมนต์ตัวเลือกเดียวสามารถแมปกับช่อง Option หลายช่องด้วยชื่อเดียวกันในหลายๆ ออบเจ็กต์ได้ อาร์กิวเมนต์ Option สามารถเนมสเปซเพื่ออ้างอิงถึงฟิลด์ Option ภายในวัตถุเดียวโดยไม่ซ้ำกันโดยใช้ชื่อคลาสเต็มของวัตถุนั้นหรือค่านามแฝง OptionClass คั่นด้วย ':' เช่น

 --classname:optionname optionvalue or
 --optionclassalias:optionname optionvalue.
 

ตัวเลือกแบบสั้นธรรมดาคือ "-" ตามด้วยอักขระตัวเลือกแบบสั้น หากตัวเลือกจำเป็นต้องมีอาร์กิวเมนต์ (ซึ่งเป็นจริงสำหรับตัวเลือกที่ไม่ใช่บูลีน) อาจถูกเขียนเป็นพารามิเตอร์แยกต่างหาก แต่ไม่จำเป็นต้องเป็นเช่นนั้น นั่นคือ "-f out.txt" และ "-fout.txt" เป็นที่ยอมรับทั้งคู่

คุณสามารถระบุตัวเลือกสั้นๆ หลายตัวเลือกหลัง "-" เดียวได้ ตราบใดที่ทั้งหมด (ยกเว้นอาจเป็นตัวเลือกสุดท้าย) ไม่ต้องการอาร์กิวเมนต์

ตัวเลือกแบบยาวจะขึ้นต้นด้วย "--" ตามด้วยอักขระหลายตัว หากตัวเลือกจำเป็นต้องมีอาร์กิวเมนต์ อาจเขียนไว้หลังชื่อตัวเลือกโดยตรง คั่นด้วย "=" หรือเป็นอาร์กิวเมนต์ถัดไป (นั่นคือ "--file=out.txt" หรือ "--file out.txt")

ตัวเลือกแบบยาวบูลีน '--ชื่อ' จะได้รับตัวแสดงร่วม '--no-name' โดยอัตโนมัติ เมื่อเลือกตัวเลือก "--flag" ดังนั้น "--flag", "--no-flag", "--flag=true" และ "--flag=false" ล้วนถูกต้อง แม้ว่าจะไม่ใช่ "--flag" ก็ตาม true" หรือ "--flag false" ได้รับอนุญาต (เนื่องจาก "--flag" เพียงอย่างเดียวก็เพียงพอแล้ว คำว่า "true" หรือ "false" ต่อไปนี้จึงถูกตีความแยกกัน) คุณสามารถใช้ "ใช่" และ "ไม่" เป็นคำพ้องสำหรับ "จริง" และ "เท็จ"

แต่ละสตริงที่ไม่เริ่มต้นด้วย "-" และไม่ใช่อาร์กิวเมนต์ที่จำเป็นสำหรับตัวเลือกก่อนหน้าถือเป็นอาร์กิวเมนต์ตำแหน่งที่ไม่ใช่ตัวเลือก เช่นเดียวกับสตริงที่ต่อเนื่องกันทั้งหมด แต่ละสตริงหลัง "--" เป็นอาร์กิวเมนต์ตำแหน่งที่ไม่ใช่ตัวเลือก

ฟิลด์ที่เกี่ยวข้องกับตัวเลือกจะได้รับการอัปเดตเมื่อมีการประมวลผลตัวเลือก อาร์กิวเมนต์ตำแหน่งที่เหลือจะถูกส่งกลับเป็น List<String>

นี่เป็นตัวอย่างง่ายๆ:

 // Non-@Option fields will be ignored.
 class Options {
     @Option(name = "quiet", shortName = 'q')
     boolean quiet = false;

     // Here the user can use --no-color.
     @Option(name = "color")
     boolean color = true;

     @Option(name = "mode", shortName = 'm')
     String mode = "standard; // Supply a default just by setting the field.

     @Option(name = "port", shortName = 'p')
     int portNumber = 8888;

     // There's no need to offer a short name for rarely-used options.
     @Option(name = "timeout" )
     double timeout = 1.0;

     @Option(name = "output-file", shortName = 'o' })
     File output;

     // Multiple options are added to the collection.
     // The collection field itself must be non-null.
     @Option(name = "input-file", shortName = 'i')
     List<File> inputs = new ArrayList<File>();

 }

 Options options = new Options();
 List<String> posArgs = new OptionParser(options).parse("--input-file", "/tmp/file1.txt");
 for (File inputFile : options.inputs) {
     if (!options.quiet) {
        ...
     }
     ...

 }

 
ดูเพิ่มเติมที่:
  • หน้าคน getopt(1)
  • โมดูล "optparse" ของ Python (http://docs.python.org/library/optparse.html)
  • POSIX "แนวทางไวยากรณ์ยูทิลิตี้" (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • GNU "มาตรฐานสำหรับอินเทอร์เฟซบรรทัดคำสั่ง" (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

ดูสิ่งนี้ด้วย:

สรุป

ผู้รับเหมาก่อสร้างสาธารณะ

ArgsOptionParser ( optionSources) ArgsOptionParser ( optionSources)

สร้าง ArgsOptionParser สำหรับคอลเลกชันของวัตถุ

ArgsOptionParser (Object... optionSources)

สร้าง ArgsOptionParser สำหรับวัตถุอย่างน้อยหนึ่งรายการ

วิธีการสาธารณะ

getInopOptions ()

ส่งกลับชุดตัวเลือกที่ไม่ได้เปลี่ยนค่าเริ่มต้นใดๆ

static String getOptionHelp (boolean importantOnly, Object optionObject)

ข้อความวิธีใช้เอาท์พุตสำหรับช่อง Option ทั้งหมดใน ตัวเลือกวัตถุ .

parse (String... args)

แยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง 'args' โดยตั้งค่าฟิลด์ @Option ของ 'optionSource' ที่มอบให้กับ Constructor

parse ( args) parse ( args)

วิธี parse(String) ที่รับ ERROR(/List) ของอาร์กิวเมนต์

parseBestEffort ( args) parseBestEffort ( args)

วิธี parseBestEffort(String) สำรองที่รับ ERROR(/List) ของอาร์กิวเมนต์

parseBestEffort ( args, boolean forceContinue) parseBestEffort ( args, boolean forceContinue)

วิธี parseBestEffort(String) สำรองที่รับ ERROR(/List) ของอาร์กิวเมนต์ และสามารถบังคับให้แยกวิเคราะห์ต่อไปได้จนกว่าจะสิ้นสุด แม้ว่า args บางส่วนจะไม่แยกวิเคราะห์ก็ตาม

parseBestEffort (String... args)

parse(String) เวอร์ชันความพยายามที่ดีที่สุด

void validateMandatoryOptions ()

ตรวจสอบว่ามีการตั้งค่าฟิลด์ทั้งหมดที่ทำเครื่องหมายว่าบังคับแล้ว

ผู้รับเหมาก่อสร้างสาธารณะ

ArgsOptionParser

public ArgsOptionParser ( optionSources)

สร้าง ArgsOptionParser สำหรับคอลเลกชันของวัตถุ

พารามิเตอร์
optionSources : วัตถุกำหนดค่า

ขว้าง
ConfigurationException หากมีการกำหนดค่าออบเจ็กต์การกำหนดค่าไม่ถูกต้อง

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

สร้าง ArgsOptionParser สำหรับวัตถุอย่างน้อยหนึ่งรายการ

พารามิเตอร์
optionSources Object : วัตถุกำหนดค่า

ขว้าง
ConfigurationException หากมีการกำหนดค่าออบเจ็กต์การกำหนดค่าไม่ถูกต้อง

วิธีการสาธารณะ

getInopOptions

public  getInopOptions ()

ส่งกลับชุดตัวเลือกที่ไม่ได้เปลี่ยนค่าเริ่มต้นใดๆ

การส่งคืน

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

ข้อความวิธีใช้เอาท์พุตสำหรับช่อง Option ทั้งหมดใน ตัวเลือกวัตถุ .

ข้อความช่วยเหลือสำหรับแต่ละตัวเลือกจะอยู่ในรูปแบบต่อไปนี้

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
ข้อความ 'ค่าเริ่มต้น..." จะถูกละเว้นหากฟิลด์ตัวเลือกเป็นโมฆะหรือว่างเปล่า

พารามิเตอร์
importantOnly boolean : หาก true ให้ช่วยพิมพ์เฉพาะตัวเลือกที่สำคัญเท่านั้น

optionObject Object : วัตถุสำหรับพิมพ์ข้อความช่วยเหลือ

การส่งคืน
String สตริงที่มีข้อความช่วยเหลือที่ใช้งานง่ายสำหรับฟิลด์ตัวเลือกทั้งหมด

แยกวิเคราะห์

public  parse (String... args)

แยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง 'args' โดยตั้งค่าฟิลด์ @Option ของ 'optionSource' ที่มอบให้กับ Constructor

พารามิเตอร์
args String

การส่งคืน
ERROR(/List) ของอาร์กิวเมนต์ตำแหน่งที่เหลือหลังจากประมวลผลตัวเลือกทั้งหมด

ขว้าง
ConfigurationException หากเกิดข้อผิดพลาดในการแยกวิเคราะห์ข้อโต้แย้ง

แยกวิเคราะห์

public  parse ( args)

วิธี parse(String) ที่รับ ERROR(/List) ของอาร์กิวเมนต์

พารามิเตอร์
args

การส่งคืน
ERROR(/List) ของอาร์กิวเมนต์ตำแหน่งที่เหลือหลังจากประมวลผลตัวเลือกทั้งหมด

ขว้าง
ConfigurationException หากเกิดข้อผิดพลาดในการแยกวิเคราะห์ข้อโต้แย้ง

แยกวิเคราะห์BestEffort

public  parseBestEffort ( args)

วิธี parseBestEffort(String) สำรองที่รับ ERROR(/List) ของอาร์กิวเมนต์

พารามิเตอร์
args

การส่งคืน
ERROR(/List) ของอาร์กิวเมนต์ที่เหลือ

แยกวิเคราะห์BestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

วิธี parseBestEffort(String) สำรองที่รับ ERROR(/List) ของอาร์กิวเมนต์ และสามารถบังคับให้แยกวิเคราะห์ต่อไปได้จนกว่าจะสิ้นสุด แม้ว่า args บางส่วนจะไม่แยกวิเคราะห์ก็ตาม

พารามิเตอร์
args : รายการที่จะมี args ที่เหลือ

forceContinue boolean : เป็นจริงหากควรแยกวิเคราะห์ต่อไป แม้ว่าบาง args จะไม่แยกวิเคราะห์ก็ตาม

การส่งคืน
ERROR(/List) ของอาร์กิวเมนต์ที่เหลือ

แยกวิเคราะห์BestEffort

public  parseBestEffort (String... args)

parse(String) เวอร์ชันความพยายามที่ดีที่สุด หาก ConfigurationException ถูกส่งออกไป ข้อยกเว้นนั้นจะถูกบันทึกภายใน และอาร์กิวเมนต์ที่เหลือ (รวมถึงอาร์กิวเมนต์ที่ทำให้เกิดข้อยกเว้นจะถูกส่งกลับ) จะถูกส่งกลับ วิธีนี้ไม่โยน

พารามิเตอร์
args String

การส่งคืน
ERROR(/List) ของอาร์กิวเมนต์ที่เหลือ

ตรวจสอบตัวเลือกบังคับ

public void validateMandatoryOptions ()

ตรวจสอบว่ามีการตั้งค่าฟิลด์ทั้งหมดที่ทำเครื่องหมายว่าบังคับแล้ว

ขว้าง
com.android.tradefed.config.ConfigurationException
ConfigurationException