Walkthrough: usar a análise de código estático para encontrar defeitos de códigoWalkthrough: Use static code analysis to find code defects

Neste tutorial, você analisará um projeto gerenciado para defeitos de código usando a análise de código herdada.In this walkthrough, you'll analyze a managed project for code defects by using legacy code analysis.

Este artigo orienta você pelo processo de uso da análise herdada para analisar seus assemblies de código gerenciado .NET para conformidade com as diretrizes de design do .NET.This article steps you through the process of using legacy analysis to analyze your .NET managed code assemblies for conformance with the .NET design guidelines.

Criar uma biblioteca de classesCreate a class library

  1. Abra o Visual Studio e crie um novo projeto do modelo biblioteca de classes (.NET Framework) .Open Visual Studio and create a new project from the Class Library (.NET Framework) template.

  2. Nomeie o projeto CodeAnalysisManagedDemo.Name the project CodeAnalysisManagedDemo.

  3. Depois que o projeto for criado, abra o arquivo Class1.cs .After the project is created, open the Class1.cs file.

  4. Substitua o texto existente em Class1.cs pelo seguinte código:Replace the existing text in Class1.cs with the following code:

    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.Save the Class1.cs file.

Analisar o projeto para defeitos de códigoAnalyze the project for code defects

  1. Selecione o projeto CodeAnalysisManagedDemo em Gerenciador de soluções.Select the CodeAnalysisManagedDemo project in Solution Explorer.

  2. No menu Projeto , clique em Propriedades.On the Project menu, click Properties.

    A página de propriedades CodeAnalysisManagedDemo é exibida.The CodeAnalysisManagedDemo properties page is displayed.

  3. Escolha a guia análise de código .Choose the Code Analysis tab.

  1. Verifique se Habilitar análise de código no Build está selecionado.Make sure that Enable Code Analysis on Build is selected.

  2. Na lista suspensa executar esta regra definida , selecione todas as regras da Microsoft.From the Run this rule set drop-down list, select Microsoft All Rules.

  1. Verifique se executar na compilação está selecionado na seção analisadores binários .Make sure that Run on build is selected in the Binary analyzers section.

  2. Na lista suspensa regras ativas , selecione Microsoft All Rules.From the Active rules drop-down list, select Microsoft All Rules.

  1. No menu arquivo , clique em salvar itens selecionados e feche as páginas de propriedades.On the File menu, click Save Selected Items , and then close the properties pages.

  2. No menu Compilar , clique em criar CodeAnalysisManagedDemo.On the Build menu, click Build CodeAnalysisManagedDemo.

    Os avisos de compilação do projeto CodeAnalysisManagedDemo são mostrados nas janelas de lista de erros e saída .The CodeAnalysisManagedDemo project build warnings are shown in the Error List and Output windows.

Corrigir os problemas de análise de códigoCorrect the code analysis issues

  1. No menu Exibir , escolha lista de erros.On the View menu, choose Error List.

    Dependendo do perfil de desenvolvedor que você escolheu, talvez seja necessário apontar para outras janelas no menu Exibir e, em seguida, escolher lista de erros.Depending on the developer profile that you chose, you might have to point to Other Windows on the View menu, and then choose Error List.

  2. Em Gerenciador de soluções , escolha Mostrar todos os arquivos.In Solution Explorer , choose Show All Files.

  3. Expanda o nó Propriedades e, em seguida, abra o arquivo AssemblyInfo.cs .Expand the Properties node, and then open the AssemblyInfo.cs file.

  4. Use as seguintes dicas para corrigir os avisos:Use the following tips to correct the warnings:

    CA1014: Marcar assemblies com o CLSCompliantAttribute: Adicione o código [assembly: CLSCompliant(true)] ao final do arquivo AssemblyInfo.cs.CA1014: Mark assemblies with CLSCompliantAttribute: Add the code [assembly: CLSCompliant(true)] to the end of the AssemblyInfo.cs file.

    CA1032: Implementar construtores de exceção padrão: Adicione o construtor public demo (String s) : base(s) { } à classe demo .CA1032: Implement standard exception constructors: Add the constructor public demo (String s) : base(s) { } to the class demo.

    CA1032: Implementar construtores de exceção padrão: Adicione o construtor public demo (String s, Exception e) : base(s, e) { } à classe demo .CA1032: Implement standard exception constructors: Add the constructor public demo (String s, Exception e) : base(s, e) { } to the class demo.

    CA1032: Implementar construtores de exceção padrão: Adicione o construtor protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } à demonstração da classe.CA1032: Implement standard exception constructors: Add the constructor protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } to the class demo. Você também precisará adicionar uma using instrução para System.Runtime.Serialization .You'll also need to add a using statement for System.Runtime.Serialization.

    CA1032: Implementar construtores de exceção padrão: Adicione o construtor public demo () : base() { } à classe demo .CA1032: Implement standard exception constructors: Add the constructor public demo () : base() { } to the class demo.

    CA1709: os identificadores devem estar em maiúsculas/minúsculas: altere a capitalização do namespace testCode para TestCode .CA1709: Identifiers should be cased correctly: Change the casing of the namespace testCode to TestCode.

    CA1709: os identificadores devem estar em maiúsculas e minúsculas: altere o nome do membro para Demo .CA1709: Identifiers should be cased correctly: Change the name of the member to Demo.

    CA1709: os identificadores devem estar em maiúsculas e minúsculas: altere o nome do membro para Item .CA1709: Identifiers should be cased correctly: Change the name of the member to Item.

    CA1710: os identificadores devem ter o sufixo correto: altere o nome da classe e seus construtores para DemoException .CA1710: Identifiers should have correct suffix: Change the name of the class and its constructors to DemoException.

    CA2237: marcar tipos ISerializable com SerializableAttribute: Adicione o [Serializable ()] atributo à classe demo .CA2237: Mark ISerializable types with SerializableAttribute: Add the [Serializable ()] attribute to the class demo.

    CA2210: assemblies devem ter nomes fortes válidos: assinar ' CodeAnalysisManagedDemo ' com uma chave de nome forte:CA2210: Assemblies should have valid strong names: Sign 'CodeAnalysisManagedDemo' with a strong name key:

    1. No menu projeto , escolha CodeAnalysisManagedDemo Propriedades.On the Project menu, choose CodeAnalysisManagedDemo Properties.

      As propriedades do projeto são exibidas.The project properties appear.

    2. Escolha a guia Assinatura.Choose the Signing tab.

    3. Marque a caixa de seleção assinar o assembly .Select the Sign the assembly check box.

    4. Na lista escolher um arquivo de chave de nome de cadeia de caracteres , selecione <New> .In the Choose a string name key file list, select <New>.

      A caixa de diálogo Criar Chave de Nome Forte é aberta.The Create Strong Name Key dialog box appears.

    5. Para nome de arquivo de chave , insira TestKey.For Key file name , enter TestKey.

    6. Insira uma senha e escolha OK.Enter a password, and then choose OK.

    7. No menu arquivo , escolha salvar itens selecionados e feche as páginas de propriedades.On the File menu, choose Save Selected Items , and then close the property pages.

    Depois de concluir todas as alterações, o arquivo Class1.cs deverá ser semelhante ao seguinte:After you complete all the changes, the Class1.cs file should look like the following:

    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.Rebuild the project.

Excluir avisos de análise de códigoExclude code analysis warnings

  1. Para cada um dos avisos restantes, faça o seguinte:For each of the remaining warnings, do the following:

    1. Selecione o aviso no lista de erros.Select the warning in the Error List.

    2. No menu do clique com o botão direito do mouse (menu de contexto), escolha suprimir > no arquivo de supressão.From the right-click menu (context menu), choose Suppress > In Suppression File.

  2. Recompile o projeto.Rebuild the project.

    O projeto é compilado sem avisos ou erros.The project builds without any warnings or errors.

Veja tambémSee also

Análise de código para código gerenciadoCode analysis for managed code