Passo a passo: como usar a análise de código estático para encontrar defeitos de código

Neste passo a passo, você analisará um projeto gerenciado usando a análise de código herdada para verificar se há defeitos de código.

Este artigo percorre o processo de uso da análise herdada para analisar os assemblies de código gerenciado do .NET quanto à conformidade com as diretrizes de design do .NET.

Criar uma biblioteca de classes

  1. Abra o Visual Studio e crie um novo projeto com base no modelo Biblioteca de classes (.NET Framework).

  2. Nomeie o projeto como CodeAnalysisManagedDemo.

  3. Depois que o projeto for criado, abra o arquivo Class1.cs.

  4. Substitua o texto presente em Class1.cs pelo seguinte código:

    using System;
    
    namespace testCode
    {
        public class demo : Exception
        {
            public static void Initialize(int size) { }
            protected static readonly int _item;
            public static int item { get { return _item; } }
        }
    }
    
  5. Salve o arquivo Class1.cs.

Verificar se há a defeitos de código no projeto

  1. Selecione o projeto CodeAnalysisManagedDemo no Gerenciador de Soluções.

  2. No menu Projeto , clique em Propriedades.

    A página de propriedades CodeAnalysisManagedDemo é exibida.

  3. Selecione a guia Análise de Código.

  4. Verifique se a opção Executar no build está selecionada na seção Analisadores binários.

  5. Na lista suspensa Regras ativas, selecione Todas as regras da Microsoft.

  6. No menu Arquivo, clique em Salvar Itens Selecionados, depois feche as páginas de propriedades.

  7. No menu Compilar, clique em Compilar CodeAnalysisManagedDemo.

    Os avisos de compilação do projeto CodeAnalysisManagedDemo são mostrados nas janelas Lista de Erros e Saída.

Corrigir os problemas de análise de código

  1. No menu Exibir, escolha Lista de Erros.

    Dependendo do perfil de desenvolvedor escolhido, talvez seja necessário apontar para Outras Janelas no menu Exibir e, depois, escolher Lista de Erros.

  2. Em Gerenciador de Soluções, clique Mostrar Todos os Arquivos.

  3. Expanda o nó Propriedades e abra o arquivo AssemblyInfo.cs.

  4. Use as dicas a seguir para corrigir os avisos:

    CA1014: marcar assemblies com CLSCompliantAttribute: adicione o código [assembly: CLSCompliant(true)] ao final do arquivo AssemblyInfo.cs.

    CA1032: implementar construtores de exceção padrão: adicione o construtor public demo (String s) : base(s) { } à classe demo.

    CA1032: implementar construtores de exceção padrão: adicione o construtor public demo (String s, Exception e) : base(s, e) { } à classe demo.

    CA1032: implementar construtores de exceção padrão: adicione o construtor protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } à demonstração de classe . Você também precisará adicionar uma instrução using para System.Runtime.Serialization.

    CA1032: implementar construtores de exceção padrão: adicione o construtor public demo () : base() { } à classe demo.

    CA1709: os identificadores devem estar redigidos corretamente quanto a maiúsculas e minúsculas: altere o uso de maiúsculas e minúsculas do namespace testCode para TestCode.

    CA1709: os identificadores devem estar redigidos corretamente quanto a maiúsculas e minúsculas: altere o nome do membro para Demo.

    CA1709: os identificadores devem estar redigidos corretamente quanto a maiúsculas e minúsculas: altere o nome do membro para Item.

    CA1710: os identificadores devem ter o sufixo correto: altere o nome da classe e seus construtores para DemoException.

    CA2237: marcar tipos ISerializable com SerializableAttribute: adicione o atributo [Serializable ()] à classe demo.

    CA2210: assemblies devem ter nomes fortes válidos: assine “CodeAnalysisManagedDemo” com uma chave de nome forte:

    1. No menu Projeto, escolha Propriedades CodeAnalysisManagedDemo.

      As propriedades do projeto são exibidas.

    2. Escolha a guia Assinatura.

    3. Marque a caixa de seleção Assinar o assembly.

    4. Na lista Escolher um arquivo de chave de nome de cadeia de caracteres, selecione <Novo>.

      A caixa de diálogo Criar Chave de Nome Forte é aberta.

    5. Em Nome do arquivo de chave, insira TestKey.

    6. Digite uma senha e clique em OK.

    7. No menu Arquivo, escolha Salvar Itens Selecionados e feche as páginas de propriedades.

    Depois de concluir todas as alterações, o arquivo Class1.cs deverá se parecer com o seguinte:

    using System;
    using System.Runtime.Serialization;
    
    namespace TestCode
    {
        [Serializable()]
        public class DemoException : Exception
        {
            public DemoException () : base() { }
            public DemoException(String s) : base(s) { }
            public DemoException(String s, Exception e) : base(s, e) { }
            protected DemoException(SerializationInfo info, StreamingContext context) : base(info, context) { }
    
            public static void Initialize(int size) { }
            protected static readonly int _item;
            public static int Item { get { return _item; } }
        }
    }
    
  5. Recompile o projeto.

Excluir avisos da análise de código

  1. Para cada aviso restante, faça o seguinte:

    1. Selecione o aviso na Lista de Erros.

    2. No menu aberto ao clicar com o botão direito do mouse (menu de contexto), escolha Suprimir>No Arquivo de Supressão.

  2. Recompile o projeto.

    O projeto é compilado sem avisos nem erros.

Análise de código para código gerenciado