`Command` class violates design rule CA1010
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia dalla dichiarazione collegata in src/System.CommandLine/Command.cs e riproduci CA1010 con AnalysisMode impostato su Recommended o All, usando l'esempio MyCommand. Il lavoro è completato quando i comandi che ereditano pubblicamente non emettono più CA1010, preservando al contempo il comportamento esistente dei figli di Command.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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>
- Lingua principale
- C#
- Stelle
- 3.7k
- Fork
- 434
- Merge medio
- 4h 46m
- PR unite (30g)
- 1
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di dotnet/command-line-api
-
German localization is incompleteForse già presa @b-v-d-e-v l’ha presa 7 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
dotnet/command-line-api#2852 ·
-
Incomplete French (fr) translation: RequiredOptionWasNotProvided not translatedForse già presa @JPBlanc l’ha presa 105 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
dotnet/command-line-api#2822 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
dotnet/command-line-api#2792 · 2 commenti · 16 reazioni ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
dotnet/command-line-api#2704 ·
-
GetCompletions should check exit code of invoked applicationForse già presa @baradgur l’ha presa 1276 giorni fa. ApertaArea-Completions bug help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
dotnet/command-line-api#2137 · 1 commento · 3 reazioni ·
Tutte le issue di dotnet/command-line-api
Issue simili
-
[i18n] 安装实例完成后的成功提示未正确本地化Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
PCL-Community/PCL-CE#3658 ·
I maintainer di solito rispondono entro 1 giorno
-
Deploy & Patch-issues opprettes ikke: create-pnd-issues.yml har feilet hver uke siden 2025-09-08Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
Altinn/altinn-auth#4359 ·
I maintainer di solito rispondono entro 1 giorno
-
アプリ: チャット 優先: 中 提案
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
yksr-melt/Meltype#243 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
type/automation type/tech-debt
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
High-DPI fixes for release/1.3: editor toolbar icons and Color Picker layout (patch included)Apertano-stack-trace
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno