# args **Repository Path**: twa-java-bootcamp/args ## Basic Information - **Project Name**: args - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-10-15 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Args =========== 我们时常需要解析命令行传入的若干参数。在没有方便的工具的情况下,我们通常会用字符串数字来接收这些参数并在主函数中遍历他们。事实上,我们的确可以通过各种途径获得这样的工具,但是他们大多都不能满足我们的要求。求人不如求己,我们就自己写一个吧! 传递给程序的参数包含两个部分: * flag: 是一个字符,在传入给程序时必须前置一个短横线 * value: 跟在flag后的具体值 flag后可以有0个或1个value 我们需要写一个parser用于解析上述这种参数。 parser能够接受一个schema来指定期望接受到的参数格式,其中schema会指定flag和value的数量及类型。当程序将参数传递给parser后,parser会首先检查传入的参数是否符合schema的要求。 例如: 程序希望的传入参数如下: -l -p 8080 -d /usr/logs 那么对应的schema要求应为: * 参数可以有三种flag: l, p, d * l是一个布尔标记不需要传入对应的value,当传入参数中有l时代表true,否则为false * p的value类型为整数 * d的value类型为string 假如schema支持的flag没有在参数中出现,那么其值为默认值。例如布尔值的默认值为false,数值的默认值为0,字符串的默认值为""。 假如传入的参数不符合schema的规定,我们必须给出友好的错误提示以告知到底什么出了问题。 需求澄清 1. 整个字符串前后可以有空格,比如” -l ” 2. 要具备支持更多参数的能力 3. 不允许flag长度超过1 4. 参数之间不用空格分割视为非法,比如-p-d 5. 不允许输入重复flag 6. 目前不支持的参数报错,提示该参数目前不支持 7. value不能以-开头,如果以-开头,视作另一个参数的开始 8. -与flag之间加空格报错, value中间有空格报错 9. flag与value之间,flag之间可以有多空格 10.命令长度不超过255 ## 已存在代码说明 已经存在的代码主要讲解如何使用测试,我们看到HelloWorldTest下有两个测试,第一个测试演示了如何进行集成测试。 第二个测试演示了如何进行mock。