ArgsOptionParser (AgsOptionParser)

public class ArgsOptionParser
extends OptionSetter

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


從剖析的指令列引數中填入 Option 欄位。

傳入的 String[] 中的字串是由左至右剖析。每個字串都會歸類為簡短 選項 (例如「-v」)、長選項 (例如「--verbose」) )、選項引數 (例如 「out.txt」,或是非選項的位置引數,

每個選項引數都必須對應至一或多個 Option 欄位。長選項會對應至 Option 名稱和一個簡短選項對應至 Option 簡稱。每個選項名稱和 選項簡稱必須與所有其他項目 相同物件內的 Option 欄位。

單一選項引數可對應至多個名稱相同的 Option 欄位 以便在多個物件之間運作Option 引數可做為命名空間來代表 單一物件內的 Option 欄位,會使用該物件的完整類別名稱或 OptionClass別名值 (以「:」分隔)。ie

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

簡單來說就是「-」後面接著簡短的選項字元如果這個選項需要 引數 (任何非布林值選項的 true) 可視為獨立參數。 但不一定也就是「-f out.txt」和「-fout.txt」這兩者都是接受的

您可以在一個「-」後方指定多個簡短選項(除了 可能的最後一個) 不需要引數。

長選項開頭為「--」後面接著幾個字元如果這個選項需要 引數直接寫入選項名稱之後 (以「=」分隔),或為下一個引數 引數。(也就是「--file=out.txt」或「--file out.txt」)。

布林值長選項「--name」會自動取得「--no-name」隨播廣告。提供選項 "--flag"、、"--flag"、"--no-flag"、"--flag=true"和「--flag=false」都是有效的值 「--flag true」也不是「--flag false」系統支援 (因為「--flag」本身就足夠), 在「true」之後或「false」會另外解讀)。您可以使用「是」和「否」視為同義詞 代表「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) 手冊頁面
  • Python 的「optparse」模組 (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

ArgsOptionParser(Object... optionSources)

為一或多個物件建立 ArgsOptionParser

公用方法

getInopOptions()

傳回未變更任何預設值的選項組合。

static String getOptionHelp(boolean importantOnly, Object optionObject)

針對 optionObject 中的所有 Option 欄位輸出說明文字。

parse(String... args)

剖析指令列引數「args」,設定「optionSource」的 @Option 欄位 提供給建構函式。

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 (AgsOptionParser)

public ArgsOptionParser ( optionSources)

針對物件集合建立 ArgsOptionParser

參數
optionSources :config 物件。

擲回
ConfigurationException 即可。

ArgsOptionParser (AgsOptionParser)

public ArgsOptionParser (Object... optionSources)

為一或多個物件建立 ArgsOptionParser

參數
optionSources Object:config 物件。

擲回
ConfigurationException 即可。

公用方法

getInopOptions

public  getInopOptions ()

傳回未變更任何預設值的選項組合。

傳回

getOptionHelp 說明

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

針對 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」,設定「optionSource」的 @Option 欄位 提供給建構函式。

參數
args String

傳回
處理所有選項後,剩餘的位置引數 ERROR(/List)

擲回
ConfigurationException 在剖析引數時發生錯誤。

剖析

public  parse ( args)

替代的 parse(String) 方法採用引數的 ERROR(/List)

參數
args

傳回
處理所有選項後,剩餘的位置引數 ERROR(/List)

擲回
ConfigurationException 在剖析引數時發生錯誤。

parseBestEffort

public  parseBestEffort ( args)

替代的 parseBestEffort(String) 方法,採用的 ERROR(/List) 引數

參數
args

傳回
左側引數的 ERROR(/List)

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

替代的 parseBestEffort(String) 方法,採用的 ERROR(/List) 可強制持續剖析至結束為止,即使部分引數不會 剖析。

參數
args :包含引數左方的清單。

forceContinue boolean:如果部分引數未剖析,則為 True。

傳回
左側引數的 ERROR(/List)

parseBestEffort

public  parseBestEffort (String... args)

盡可能使用 parse(String) 版本。如果 ConfigurationException 擲回,這個例外狀況會在內部擷取,以及其他的引數 (包括 引數)。此方法不會擲回。

參數
args String

傳回
左側引數的 ERROR(/List)

VerifyMandatoryOptions

public void validateMandatoryOptions ()

確認所有標示為必填的欄位皆已設定。

擲回
com.android.tradefed.config.ConfigurationException
ConfigurationException