Confusing behavior when order of long/short options are swapped
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu với option_description::option_description(const char*, const value_semantic*) và các quy tắc định dạng tên được ghi trong tài liệu. Tái hiện hành vi trong chương trình kiểm thử đơn giản bằng "h,help", sau đó xác định xem các tên bị đảo vị trí có nên được chấp nhận hay từ chối một cách tường minh hay không. Được xem là hoàn tất khi việc sử dụng sai không còn tạo ra hành vi khó hiểu trong thời gian chạy và hành vi mong muốn được một bài kiểm thử bao quát.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Adding an option like this:
desc.add_options()( "h,help", "Print help and exit" );
In a simple test program and then trying to use --help results in a confusing error:
$ ./prog --help
libc++abi.dylib: terminating with uncaught exception of type boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::unknown_option> >: unrecognised option '--help'
The documentation for option_description::option_description(const char*, const value_semantic*) says:
The 'name' parameter is interpreted by the following rules:
if there's no "," character in 'name', it specifies long name
otherwise, the part before "," specifies long name and the part after -- short name.
However, it is easy for new users of this library to think that swapping them is OK.
The reason for this limitation isn't clear to me -- presumably, if one is "long" and the other "short", providing them in either order should be OK, and a simple test can tell which is which. In either case, the error message on misuse is needlessly cryptic and could probably be turned into an error thrown from option_description::option_description. This seems reasonable, since using "h,help" as the option name results in bad behavior regardless: the resulting executable has options --h and -h.
- Ngôn ngữ chính
- C++
- Star
- 136
- Fork
- 117
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của boostorg/program_options
-
Provide C++20 moduleĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 45/100
boostorg/program_options#160 · 2 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
boostorg/program_options#159 · 3 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
boostorg/program_options#147 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 30/100
boostorg/program_options#146 ·
-
non static member shadowsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
boostorg/program_options#144 ·
Tất cả issue của boostorg/program_options
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
gavinlouuu-kpt/mib-studio-qt#517 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
ws_bridge: stripping format=evr for matchmaker connections can concatenate the path and queryĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
EchoTools/nevr-runtime#116 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
code-quality libc++
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
llvm/llvm-project#229284 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
test-issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
llvm/offload-test-suite#1557 ·
Maintainer thường phản hồi trong vòng 1 ngày