commandlineparser / commandlineparser/commandline

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

Abierto
#340 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C#
Estrellas
4.8k
Forks
478
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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 `"`.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.