Trình phân tích cú pháp ArgsOption

public class ArgsOptionParser
extends OptionSetter

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


Điền các trường Option từ đối số dòng lệnh được phân tích cú pháp.

Các chuỗi trong Chuỗi truyền vào[] được phân tích cú pháp từ trái sang phải. Mỗi Chuỗi được phân loại là một chuỗi tuỳ chọn (chẳng hạn như "-v"), tuỳ chọn dài (chẳng hạn như "--chi tiết"), đối số cho một tuỳ chọn (chẳng hạn như "out.txt" trong "-f out.txt") hoặc một đối số vị trí không tùy chọn.

Mỗi đối số tuỳ chọn phải liên kết đến một hoặc nhiều trường Option. Lựa chọn dài liên kết với Tên Option và một tuỳ chọn ngắn liên kết với tên ngắn Option. Tên từng lựa chọn và tên ngắn của lựa chọn phải là duy nhất so với tất cả các Các trường Option trong cùng một đối tượng.

Một đối số lựa chọn có thể được liên kết với nhiều trường Option có cùng tên trên nhiều đối tượng. Các đối số Option có thể được đặt tên không gian tên để tham chiếu duy nhất đến một Trường Option trong một đối tượng duy nhất bằng cách sử dụng tên lớp đầy đủ của đối tượng đó hoặc Giá trị bí danh OptionClass được phân tách bằng dấu ':'. tức là

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

Một tuỳ chọn ngắn gọn đơn giản là "-" theo sau là một ký tự tuỳ chọn ngắn. Nếu lựa chọn này yêu cầu đối số (đúng với bất kỳ tùy chọn không phải boolean nào), nó có thể được viết dưới dạng một tham số riêng biệt, nhưng không cần thiết. Tức là "-f out.txt" và "-fout.txt" đều có thể chấp nhận được.

Có thể chỉ định nhiều tuỳ chọn ngắn sau một dấu "-" miễn là tất cả (ngoại trừ có thể là phương thức cuối cùng) không yêu cầu đối số.

Một lựa chọn dài bắt đầu bằng "--" theo sau là vài ký tự. Nếu lựa chọn này yêu cầu đối số, nó có thể được viết ngay sau tên tuỳ chọn, phân tách bằng dấu "=" hoặc ở đối số. ("--file=out.txt" hoặc "--file out.txt".)

Một tuỳ chọn boolean dài "--name" tự động nhận '--no-name' đồng hành. Đưa ra một lựa chọn "--flag", sau đó, "--flag", "--no-flag", "--flag=true" và "--flag=false" đều hợp lệ, mặc dù không phải "--flag true" cũng như "--flag false" được phép (vì bản thân "--flag" là đủ, nên sau "true" hoặc "false" sẽ được diễn giải riêng). Bạn có thể sử dụng "yes" và "no" dưới dạng từ đồng nghĩa cho "true" và "false".

Mỗi chuỗi không bắt đầu bằng "-" và không phải là đối số bắt buộc của tùy chọn trước đó là đối số vị trí không tùy chọn, cũng như tất cả các Chuỗi liên tiếp. Mỗi chuỗi sau "--" là đối số vị trí không tùy chọn.

Các trường tương ứng với lựa chọn sẽ được cập nhật khi lựa chọn được xử lý. Còn lại các đối số vị trí được trả về dưới dạng List<String>.

Sau đây là một ví dụ đơn giản:

 // 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) {
        ...
     }
     ...

 }

 
Xem thêm:
  • trang getopt(1) man
  • "optparse" của Python mô-đun (http://docs.python.org/library/optparse.html)
  • "Hướng dẫn về cú pháp đối với tiện ích" của POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • "Tiêu chuẩn cho giao diện dòng lệnh" GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

Xem thêm:

Tóm tắt

Hàm khởi tạo công khai

ArgsOptionParser( optionSources)

Tạo ArgsOptionParser cho một tập hợp đối tượng.

ArgsOptionParser(Object... optionSources)

Tạo ArgsOptionParser cho một hoặc nhiều đối tượng.

Phương thức công khai

getInopOptions()

Trả về tập hợp các tuỳ chọn không thay đổi bất kỳ giá trị mặc định nào.

static String getOptionHelp(boolean importantOnly, Object optionObject)

Xuất văn bản trợ giúp cho tất cả các trường Option trong optionObject.

parse(String... args)

Phân tích cú pháp các đối số dòng lệnh 'args', đặt các trường @Option của 'optionSource' được cung cấp cho hàm khởi tạo.

parse( args)

Phương thức parse(String) thay thế sử dụng ERROR(/List) đối số

parseBestEffort( args)

Phương thức parseBestEffort(String) thay thế, mất ERROR(/List) đối số

parseBestEffort( args, boolean forceContinue)

Phương thức parseBestEffort(String) thay thế, mất ERROR(/List) đối số và có thể buộc phải tiếp tục phân tích cú pháp cho đến cuối cùng, ngay cả khi một số đối số không phân tích cú pháp.

parseBestEffort(String... args)

Phiên bản parse(String) có hiệu suất tốt nhất.

void validateMandatoryOptions()

Kiểm tra để đảm bảo rằng bạn đã đặt tất cả các trường được đánh dấu là bắt buộc.

Hàm khởi tạo công khai

Trình phân tích cú pháp ArgsOption

public ArgsOptionParser ( optionSources)

Tạo ArgsOptionParser cho một tập hợp đối tượng.

Tham số
optionSources : các đối tượng cấu hình.

Gửi
ConfigurationException nếu đối tượng cấu hình được định cấu hình không đúng cách.

Trình phân tích cú pháp ArgsOption

public ArgsOptionParser (Object... optionSources)

Tạo ArgsOptionParser cho một hoặc nhiều đối tượng.

Tham số
optionSources Object: các đối tượng cấu hình.

Gửi
ConfigurationException nếu đối tượng cấu hình được định cấu hình không đúng cách.

Phương thức công khai

getInopOptions

public  getInopOptions ()

Trả về tập hợp các tuỳ chọn không thay đổi bất kỳ giá trị mặc định nào.

Giá trị trả về

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

Xuất văn bản trợ giúp cho tất cả các trường Option trong optionObject.

Văn bản trợ giúp cho mỗi tuỳ chọn sẽ có định dạng sau

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
'Mặc định..." văn bản sẽ bị bỏ qua nếu trường tuỳ chọn rỗng hoặc trống.

Tham số
importantOnly boolean: nếu true chỉ in trợ giúp cho các tuỳ chọn quan trọng

optionObject Object: đối tượng cần in văn bản trợ giúp

Giá trị trả về
String Chuỗi chứa văn bản trợ giúp thân thiện với người dùng cho tất cả các trường Tuỳ chọn

phân tích cú pháp

public  parse (String... args)

Phân tích cú pháp các đối số dòng lệnh 'args', đặt các trường @Option của 'optionSource' được cung cấp cho hàm khởi tạo.

Tham số
args String

Giá trị trả về
một ERROR(/List) đối số vị trí còn lại sau khi xử lý tất cả lựa chọn.

Gửi
ConfigurationException nếu xảy ra lỗi khi phân tích cú pháp đối số.

phân tích cú pháp

public  parse ( args)

Phương thức parse(String) thay thế sử dụng ERROR(/List) đối số

Tham số
args

Giá trị trả về
một ERROR(/List) đối số vị trí còn lại sau khi xử lý tất cả lựa chọn.

Gửi
ConfigurationException nếu xảy ra lỗi khi phân tích cú pháp đối số.

phân tích cú phápBestEffort

public  parseBestEffort ( args)

Phương thức parseBestEffort(String) thay thế, mất ERROR(/List) đối số

Tham số
args

Giá trị trả về
ERROR(/List) trong số các đối số còn lại

phân tích cú phápBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

Phương thức parseBestEffort(String) thay thế, mất ERROR(/List) đối số và có thể buộc phải tiếp tục phân tích cú pháp cho đến cuối cùng, ngay cả khi một số đối số không phân tích cú pháp.

Tham số
args : danh sách chứa các đối số còn lại ở trên.

forceContinue boolean: Đúng nếu tiếp tục phân tích cú pháp ngay cả khi một số đối số không phân tích cú pháp.

Giá trị trả về
ERROR(/List) trong số các đối số còn lại

phân tích cú phápBestEffort

public  parseBestEffort (String... args)

Phiên bản parse(String) có hiệu suất tốt nhất. Nếu một ConfigurationException là đã gửi, thì ngoại lệ đó sẽ được ghi lại nội bộ và các đối số còn lại (bao gồm khiến cho ngoại lệ được gửi) được trả về. Phương thức này không gửi.

Tham số
args String

Giá trị trả về
ERROR(/List) trong số các đối số còn lại

Xác thựcbắt buộcOptions

public void validateMandatoryOptions ()

Kiểm tra để đảm bảo rằng bạn đã đặt tất cả các trường được đánh dấu là bắt buộc.

Gửi
com.android.tradefed.config.ConfigurationException
ConfigurationException