Merged
Conversation
9b751b7 to
8a0abe0
Compare
There was a problem hiding this comment.
Pull Request Overview
This PR modifies the default behavior for unknown argument handling in command line parsing options. The production code now defaults to IgnoreUnknownOptionalArguments while test code enforces strict validation with AllArgumentsMustBeRecognized.
- Updated all static parsing option properties (Flexible, DotNet, Gnu, Posix, Windows) to set
UnknownArgumentsHandlingtoIgnoreUnknownOptionalArguments - Modified test helper method to override this default with
AllArgumentsMustBeRecognizedfor stricter test validation - Introduced using alias
UHto reduce verbosity in test code
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| src/DotNetCampus.CommandLine/CommandLineParsingOptions.cs | Sets default UnknownArgumentsHandling to IgnoreUnknownOptionalArguments for all predefined parsing option styles |
| tests/DotNetCampus.CommandLine.Tests/CommandLineStyleTestingExtensions.cs | Overrides production defaults with AllArgumentsMustBeRecognized for testing and adds type alias for brevity |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
lindexi
approved these changes
Nov 1, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
如果我们对使用命令行库的应用进行分类,有以下三类:
对于 1 来说,如果严格解析命令行参数,很容易出现用户启动无反应的情况;但究竟该不该忽略还有待商榷。
对于 2 来说,最好是严格解析,对于不支持的选项和位置参数报错。
但对于 3 就不一样了,由于被其他应用集成,所以调用本程序的都是提前写好的程序。各个不同应用的版本升级节奏都不一样,当增加选项增加新功能时,中间会存在某段时间旧版本在接受新传入命令行选项的情况。对开发人员来说还好,但对终端用户来说就难以接受了。
考虑到不看文档的开发人员更容易遇到开发用户端产品,并使之被其他软件调用的情况,我决定让默认行为照顾这些不看文档的开发人员,即忽略未知选项。而看文档的开发人员可以主动将其改为严格模式,确保在遇到未知选项时能正确报错。