`Command` class violates design rule CA1010
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
从 src/System.CommandLine/Command.cs 中链接的声明开始,使用 MyCommand 示例,并将 AnalysisMode 设置为 Recommended 或 All,以重现 CA1010。完成标准是公开继承的命令不再发出 CA1010,同时保留现有的 Command 子级行为。
由索引模型根据 Issue 内容生成。
描述
Summary
The System.CommandLine.Command class implements non-generic IEnumerable, but it does not implement IEnumerable<T>.
This causes classes inheriting from the Command class to violate design rule CA1010.
For projects with AnalysisMode set to Recommended or All, warning CA1010 will occur.
Build succeeded.
/home/smdn/temp/cli/Lib.cs(5,14): warning CA1010: Type 'MyCommand' directly or indirectly inherits 'IEnumerable' without implementing 'IEnumerable<T>'. Publicly-visible types should implement the generic version to broaden usability. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1010) [/home/smdn/temp/cli/cli.csproj]
1 Warning(s)
0 Error(s)
This simply triggers a warning and does not corrupt any functionality of System.CommandLine.
However, since the cause of the warning is not easy to find out and it may cause confusion, so I think this should be fixed.
Steps to reproduce
Set AnalysisMode to Recommended or All in the csproj file.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<!-- Enable design rules including CA1010 -->
<AnalysisMode>Recommended</AnalysisMode>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.CommandLine" Version="2.0.1" />
</ItemGroup>
</Project>
Create a class that inherits from the Command class.
using System.CommandLine;
namespace MyLibrary;
// warning CA1010: Type 'MyCommand' directly or indirectly inherits 'IEnumerable' without implementing 'IEnumerable<T>'. Publicly-visible types should implement the generic version to broaden usability. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1010)
public class MyCommand(string name, string? description) : Command(name, description) { }
Workarounds
The following workarounds are available to avoid this warning.
Workaround 1: disable warning CA1010
#pragma warning disable CA1010
public class MyCommand(string name, string? description) : Command(name, description)
{
}
#pragma warning restore CA1010
Workaround 2: implement IEnumerator<Symbol>
public class MyCommand(string name, string? description) : Command(name, description)
{
// Implement IEnumerator<Symbol> in order to suppress warning CA1010.
public IEnumerator<Symbol> GetEnumerator() => Children.GetEnumerator();
}
Workaround 3: reduce AnalysisMode
<!-- Reduce `AnalysisMode` to either `None`, `Default`, or `Minimum`. -->
<AnalysisMode>Minimum</AnalysisMode>
- 主要语言
- C#
- 星标
- 3.7k
- 派生
- 436
- 平均合并
- 6 小时 27 分钟
- 30 天内合并 PR
- 2
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
dotnet/command-line-api 的其他 Issue
-
German localization is incomplete可能已有人在做 @b-v-d-e-v 于 25 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 65/100
dotnet/command-line-api#2852 ·
维护者通常 1 天内回复
-
Incomplete French (fr) translation: RequiredOptionWasNotProvided not translated可能已有人在做 @JPBlanc 于 122 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 65/100
dotnet/command-line-api#2822 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
dotnet/command-line-api#2792 · 2 条评论 · 17 个 reaction ·
维护者通常 1 天内回复
-
`Argument.Arity` modify internal state on first get access.可能已有人在做 @zjdangge 于 9 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 62/100
dotnet/command-line-api#2704 ·
维护者通常 1 天内回复
-
GetCompletions should check exit code of invoked application可能已有人在做 @baradgur 于 1294 天前认领。 未关闭Area-Completions bug help wanted
难度 2/5 1-3 小时 新手友好度 72/100
dotnet/command-line-api#2137 · 1 条评论 · 3 个 reaction ·
维护者通常 1 天内回复
查看 dotnet/command-line-api 的全部 Issue
相似的 Issue
-
is:bug is:FQNIssue
难度 2/5 1-3 小时 新手友好度 72/100
nunit/nunit3-vs-adapter#1527 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 72/100
维护者通常 1 天内回复
-
bug effort:S P3
难度 2/5 1-3 小时 新手友好度 72/100
nightscout/nocturne#2840 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 68/100
fluentmigrator/fluentmigrator#2424 ·
-
track:release
难度 2/5 1-3 小时 新手友好度 80/100