Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
CA1507: usar
| Property | Valor |
|---|---|
| ID da regra | CA1507 |
| Título | Usar nameof no lugar da cadeia de caracteres |
| Categoria | Facilidade de manutenção |
| Correção interruptiva ou sem interrupção | Sem interrupção |
| Habilitado por padrão no .NET 10 | Como sugestão |
Causa
Um literal ou constante string que corresponde ao nome de um parâmetro do método que contém ou ao nome de uma propriedade do tipo que contém é usado como um argumento para um método.
Descrição da regra
A regra CA1507 sinaliza o uso de um literal string como um argumento para um método ou construtor em que uma expressão nameof (NameOf no Visual Basic) adicionaria capacidade de manutenção. A regra será acionada se todas as seguintes condições forem atendidas:
O argumento é um literal
stringou uma constante.O argumento corresponde a um parâmetro tipado por
stringdo método ou do construtor que está sendo invocado (ou seja, não há nenhuma conversão envolvida no site de chamada).Ou:
O nome declarado do parâmetro é
paramNamee o valor constante do literalstringcorresponde ao nome de um parâmetro do método, lambda ou função local em que o método ou construtor está sendo invocado.O nome declarado do parâmetro é
propertyNamee o valor constante do literalstringcorresponde ao nome de uma propriedade do tipo no qual o método ou construtor está sendo invocado.
A regra CA1507 melhora a manutenção do código nos casos em que o parâmetro pode ser renomeado no futuro, mas o literal string não é renomeado erroneamente. Ao usar nameof, o símbolo será renomeado quando o parâmetro for renomeado por meio de uma operação de refatoração. Além disso, quaisquer erros de ortografia no nome do parâmetro são capturados pelo compilador.
Como corrigir violações
Para corrigir uma violação, substitua o literal string por uma expressão nameof (NameOf no Visual Basic). Por exemplo, os dois snippets de código seguintes mostram uma violação da regra e como corrigi-la:
public Book(string title)
{
// Violates rule CA1507
Title = title ?? throw new ArgumentNullException("title", "All books must have a title.");
}
public Book(string title)
{
// Resolves rule CA1507 violation
Title = title ?? throw new ArgumentNullException(nameof(title), "All books must have a title.");
}
Dica
Uma correção de código está disponível para essa regra no Visual Studio. Para usá-lo, posicione o cursor no literal string e pressione Ctrl+. (ponto). Escolha Usar nameof para expressar nomes de símbolo na lista de opções apresentadas.
Quando suprimir avisos
Será seguro suprimir uma violação dessa regra se você não estiver preocupado com a manutenção do código.
Suprimir um aviso
Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.
#pragma warning disable CA1507
// The code that's violating the rule is on this line.
#pragma warning restore CA1507
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1507.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.