ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


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

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

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

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

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

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

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

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

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

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

ระบบจะอัปเดตช่องที่เกี่ยวข้องกับตัวเลือกเมื่อมีการประมวลผลตัวเลือก ส่วนที่เหลือ อาร์กิวเมนต์ตำแหน่งจะแสดงผลเป็น 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)
  • "การเพิ่มประสิทธิภาพ" ของ Python โมดูล (http://docs.python.org/library/optparse.html)
  • "หลักเกณฑ์ไวยากรณ์ยูทิลิตี" POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • GNU "Standards for Command Line Interfaces" (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

ดูเพิ่มเติม

สรุป

ช่างก่อสร้างสาธารณะ

ArgsOptionParser( optionSources)

สร้าง ArgsOptionParser สำหรับคอลเล็กชันออบเจ็กต์

ArgsOptionParser(Object... optionSources)

สร้าง ArgsOptionParser สำหรับออบเจ็กต์อย่างน้อย 1 รายการ

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

getInopOptions()

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

static String getOptionHelp(boolean importantOnly, Object optionObject)

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

parse(String... args)

แยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง "args" เพื่อตั้งค่าฟิลด์ @Option ของ "optionSource" ให้กับผู้สร้าง

parse( args)

เมธอด parse(String) สำรองที่มีอาร์กิวเมนต์ ERROR(/List) รายการ

parseBestEffort( args)

เมธอด parseBestEffort(String) สำรองที่ใช้เวลา ERROR(/List) ของ อาร์กิวเมนต์

parseBestEffort( args, boolean forceContinue)

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

parseBestEffort(String... args)

parse(String) เวอร์ชันที่ทำงานได้ดีที่สุด

void validateMandatoryOptions()

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

ช่างก่อสร้างสาธารณะ

ArgsOptionParser

public ArgsOptionParser ( optionSources)

สร้าง ArgsOptionParser สำหรับคอลเล็กชันออบเจ็กต์

พารามิเตอร์
optionSources : ออบเจ็กต์การกำหนดค่า

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

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

สร้าง ArgsOptionParser สำหรับออบเจ็กต์อย่างน้อย 1 รายการ

พารามิเตอร์
optionSources Object: ออบเจ็กต์การกำหนดค่า

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

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

getInopOptions

public  getInopOptions ()

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

คิกรีเทิร์น

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

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

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

   [-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" ให้กับผู้สร้าง

พารามิเตอร์
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 : รายการที่จะมีอาร์กิวเมนต์ด้านซ้าย

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

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

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

public  parseBestEffort (String... args)

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

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

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

VerifyMandatoryOptions

public void validateMandatoryOptions ()

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

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