Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Parsing gives incorrect/unexpected/inconsistent error results

Abierto
#2,664 8 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
csharp
Área
cli

Línea de trabajo

Reproduce el comportamiento de RawApi_Version_Error_tests y RawApi_Help_Error_tests usando el comando y los argumentos mostrados en el issue. Compara las cantidades y los mensajes de error informados con el comportamiento esperado de análisis y validación. La implementación debería establecer una separación clara y controlable entre los errores de análisis y la validación dependiente de la aplicación, incluido el manejo de --help y --version.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Area-Parser and Binder

Version: 2.0.0-beta7.25380.108 (Latest NuGet as of this writing)

[TestMethod]
public void RawApi_Version_Error_tests( )
{
    var rootCommand = new RootCommand("Test Root")
    {
        new Option<string>("--option1")
        {
            Description = "Test option `",
            Required = true,
        },
    };

    var result = rootCommand.Parse(["--FooBar", "--version"]);
    Assert.HasCount( 3, result.Errors, "Errors should account for, bogus arg (`--FooBar`), missing required arg (`--option1`), AND that `--version` should be solo" );
}

This test won't pass, the error count is only 2, the error regarding the --version is completely missing.
Errors are:
[0] = "Unrecognized command or argument '--FooBar'."
[1] = "Option '--option1' is required."

For help it's even worse...

[TestMethod]
public void RawApi_Help_Error_tests( )
{
    var rootCommand = new RootCommand("Test Root")
    {
        new Option<string>("--option1")
        {
            Description = "Test option `",
            Required = true,
        },
    };

    var result = rootCommand.Parse(["--FooBar", "--help"]);
    Assert.HasCount( 3, result.Errors, "Errors should account for, bogus arg (`--FooBar`), missing required arg (`--option1`), AND that `--version` should be solo" );
}

This results in NO errors. But the expectation is that an error for the bogus param AND the missing required argument is present. Basically, the problem is one of co-mingling parsing (which is really lex+parse) with validation which is semantic analysis and is VERY application dependent. Ideally, there is a way to disable all validations and move that to a distinct operation the application is in control of.

Lenguaje dominante
C#
Estrellas
3.7k
Forks
434
Merge medio
6 h 27 min
PR fusionados (30 d)
2

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de dotnet/command-line-api

Todos los issues de dotnet/command-line-api

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.