commandlineparser / commandlineparser/commandline

Invalid DataTypes for Default values may cause fatal error that can't be discovered or traced.

Aberta
#340 1 comentário 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
C#
Estrelas
4.8k
Forks
478
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

The following class have option with default value false :

public class Options
{
[Option('r', "read", MetaValue = "FILE", Required = false, HelpText = "Input file with data to process.")]
public string InputFile { get; set; }

[Option('w', "write", MetaValue = "FILE", HelpText = "Output FILE with processed data (otherwise standard output).")]
public string OutputFile { get; set; }

[Option('c', "calculate", HelpText = "calculate")]
public bool Calculate { get; set; }


//@@@@@ error here, Default = false for IEnumerable
//sure Default is wrong in that place, but discovered with code review after hours :)
[Option('g', "generators", Default = false, HelpText = "generator")]
public IEnumerable Generators { get; set; }



[Option('n', MetaValue = "INT", HelpText = "navigate.")]
public bool navigation { get; set; }
}

- No compilation error
- No error if commandline contain values for the option g like: `-r xyz.txt -c -g gen1`
- Exception for this commandline (the option g has no values) : `-r xyz.txt -c `

>Exception: Object of type 'System.Boolean' cannot be converted to type 'System.Collections.Generic.IEnumerable`1[System.String]'

The strange is that the exception can't help to determine where the source of error
It's discovered by accident when i don't pass values for the option g

[Complete TestCase](https://dotnetfiddle.net/h1e5S6)
Sure, i removed the Default from the option and the exception disappeared.

**Suggested Solution**

- Validate the match of the Datatype of the default values before setting it.
- Raise an exception ,e.g, "Parser Error: Invalid Default values for the option `"`.

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.