Tutorial: Uso del análisis de código estático para buscar defectos en el código

En este tutorial, analizará un proyecto administrado para detectar defectos en el código mediante el análisis de código heredado.

En este artículo se describe el proceso para usar el análisis heredado para analizar los ensamblados de código administrado de .NET para comprobar si cumplen las directrices de diseño de .NET.

Creación de una biblioteca de clases

  1. Abra Visual Studio y cree un nuevo proyecto a partir de la plantilla Biblioteca de clases (.NET Framework).

  2. Asigne al proyecto el nombre CodeAnalysisManagedDemo.

  3. Una vez creado el proyecto, abra el archivo Class1.cs.

  4. Reemplace el texto existente en Class1.cs por el código siguiente:

    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. Guarde el archivo Class1.cs.

Análisis del proyecto para detectar defectos en el código

  1. Seleccione el proyecto CodeAnalysisManagedDemo en el Explorador de soluciones.

  2. En el menú Proyecto , haga clic en Propiedades.

    Se muestra la página de propiedades de CodeAnalysisManagedDemo.

  3. Elija la pestaña Análisis de código.

  4. Asegúrese de que Ejecutar en compilación está seleccionado en la sección Analizadores binarios.

  5. En la lista de menú desplegable Reglas activas, seleccione Microsoft Todas las reglas.

  6. En el menú Archivo, haga clic en Guardar elementos seleccionados y, a continuación, cierre las páginas de propiedades.

  7. En el menú Compilar, haga clic en Compilar CodeAnalysisManagedDemo.

    Las advertencias de compilación del proyecto CodeAnalysisManagedDemo se muestran en las ventanas Lista de errores y Salida.

Corrección de los problemas de análisis de código

  1. En el menú Ver, elija Lista de errores.

    Según el perfil de desarrollador que elija, es posible que tenga que apuntar a Otras ventanas en el menú Ver y, a continuación, elegir Lista de errores.

  2. En el Explorador de soluciones, elija Mostrar todos los archivos.

  3. Expanda el nodo Propiedades y, a continuación, abra el archivo AssemblyInfo.cs.

  4. Use las siguientes sugerencias para corregir las advertencias:

    CA1014: Marque ensamblados con CLSCompliantAttribute: agregue el código [assembly: CLSCompliant(true)] al final del archivo AssemblyInfo.cs.

    CA1032: Implemente constructores de excepciones estándar: agregue el constructor public demo (String s) : base(s) { } a la clase demo.

    CA1032: Implemente constructores de excepciones estándar: agregue el constructor public demo (String s, Exception e) : base(s, e) { } a la clase demo.

    CA1032: Implemente constructores de excepciones estándar: agregue el constructor protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } a la clase demo. También deberá agregar una instrucción using para System.Runtime.Serialization.

    CA1032: Implemente constructores de excepciones estándar: agregue el constructor public demo () : base() { } a la clase demo.

    CA1709: Los identificadores deben usar las mayúsculas y minúsculas correctamente: cambie el uso de mayúsculas y minúsculas del espacio de nombres testCode a TestCode.

    CA1709: Los identificadores deben usar las mayúsculas y minúsculas correctamente: cambie el nombre del miembro a Demo.

    CA1709: Los identificadores deben usar las mayúsculas y minúsculas correctamente: cambie el nombre del miembro a Item.

    CA1710: Los identificadores deben tener el sufijo correcto: cambie el nombre de la clase y sus constructores a DemoException.

    CA2237: Marque los tipos ISerializables con SerializableAttribute: agregue el atributo [Serializable ()] a la clase demo.

    CA2210: Los ensamblados deben tener nombres seguros válidos: firme "CodeAnalysisManagedDemo" con una clave de nombre seguro:

    1. En el menú Proyecto, elija Propiedades de CodeAnalysisManagedDemo.

      Aparecen las propiedades del proyecto.

    2. Elija la pestaña Firma .

    3. Seleccione la casilla Firmar el ensamblado.

    4. En la lista Elegir un archivo de clave de nombre de cadena, seleccione <Nuevo>.

      Aparecerá el cuadro de diálogo Crear clave de nombre seguro.

    5. En Nombre de archivo de clave, escriba TestKey.

    6. Escriba una contraseña y, a continuación, elija Aceptar.

    7. En el menú Archivo, elija Guardar elementos seleccionados y cierre las páginas de propiedades.

    Después de completar todos los cambios, el archivo Class1.cs debe tener un aspecto similar al siguiente:

    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 el proyecto.

Exclusión de las advertencias de análisis de código

  1. Para cada una de las advertencias restantes, haga lo siguiente:

    1. Seleccione la advertencia en la Lista de errores.

    2. En el menú contextual (clic con el botón derecho), elija Suprimir>En archivo de supresión.

  2. Recompile el proyecto.

    El proyecto se compila sin advertencias ni errores.

Análisis de código para código administrado