Usar conjuntos de reglas para especificar las reglas de C++ en ejecuciónUse Rule Sets to Specify the C++ Rules to Run

En Visual Studio, puede crear y modificar un personalizado conjunto de reglas para satisfacer las necesidades concretas del proyecto asociadas al análisis de código.In Visual Studio, you can create and modify a custom rule set to meet specific project needs associated with code analysis. Los conjuntos de reglas predeterminados se almacenan en %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets.The default rule sets are stored in %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets.

Visual Studio 2017 versión 15,7 puede crear conjuntos de reglas personalizadas con cualquier texto editor y aplicarlas en las compilaciones de línea de comandos con independencia de lo que utilizas de sistema de compilación.Visual Studio 2017 version 15.7 You can create custom rule sets using any text editor and apply them in command line builds no matter what build system you are using. Para obtener más información, consulte / analyze: conjunto de reglas.For more information, see /analyze:ruleset.

Para crear una regla personalizada de C++ en Visual Studio, un proyecto de C o C++ debe estar abierto en el IDE de Visual Studio.To create a custom C++ rule set in Visual Studio, a C/C++ project must be open in the Visual Studio IDE. Y, a continuación, abra un conjunto de reglas estándar en el editor de conjunto de reglas, a continuación, agregar o quitar reglas concretas y, opcionalmente, cambiar la acción que se produce cuando el análisis de código determina que se ha infringido una regla.You then open a standard rule set in the rule set editor and then add or remove specific rules and optionally change the action that occurs when code analysis determines that a rule has been violated.

Para crear un nuevo conjunto de reglas personalizado, guárdelo con un nuevo nombre de archivo.To create a new custom rule set, you save it by using a new file name. El conjunto de reglas personalizado se asigna automáticamente al proyecto.The custom rule set is automatically assigned to the project.

Para crear una regla personalizada a partir de un solo conjunto de reglas existenteTo create a custom rule from a single existing rule set

  1. En el Explorador de soluciones, abra el menú contextual para el proyecto y, a continuación, elija propiedades.In Solution Explorer, open the shortcut menu for the project and then choose Properties.

  2. En el propiedades ficha, elija análisis de código.On the Properties tab, choose Code Analysis.

  3. En el conjunto de reglas lista desplegable, realice una de las siguientes acciones:In the Rule Set drop-down list, do one of the following:

    • Elija el conjunto de reglas que desea personalizar.Choose the rule set that you want to customize.

      - o -- or -

    • Elija <Examinar... > para especificar el conjunto de una regla existente que no esté en la lista.Choose <Browse...> to specify an existing rule set that is not in the list.

  4. Elija abiertos para mostrar las reglas en el editor de conjunto de reglas.Choose Open to display the rules in the rule set editor.

Para modificar un conjunto de reglas en el editor de conjuntos de reglasTo modify a rule set in the rule set editor

  • Para cambiar el nombre para mostrar del conjunto de reglas, en la vista menú, elija ventana propiedades.To change the display name of the rule set, on the View menu, choose Properties Window. Escriba el nombre para mostrar en el nombre cuadro.Enter the display name in the Name box. Observe que el nombre para mostrar puede diferir del nombre de archivo.Notice that the display name can differ from the file name.

  • Para agregar todas las reglas del grupo a un conjunto de reglas personalizado, active la casilla del grupo.To add all the rules of the group to a custom rule set, select the check box of the group. Para quitar todas las reglas del grupo, desactive la casilla.To remove all the rules of the group, clear the check box.

  • Para agregar una regla concreta al conjunto de reglas personalizado, active la casilla de la regla.To add a specific rule to the custom rule set, select the check box of the rule. Para quitar la regla del conjunto de reglas, desactive la casilla.To remove the rule from the rule set, clear the check box.

  • Para cambiar la acción realizada cuando se infringe una regla en un análisis de código, elija la acción por la regla de campo y, a continuación, elija uno de los siguientes valores:To change the action taken when a rule is violated in a code analysis, choose the Action field for the rule and then choose one of the following values:

    Advertir -genera una advertencia.Warn - generates a warning.

    Error -genera un error.Error - generates an error.

    Ninguno -deshabilita la regla.None - disables the rule. Esta acción es igual que quitar la regla del conjunto de reglas.This action is the same as removing the rule from the rule set.

Para agrupar, filtrar o cambiar los campos del editor de conjuntos de reglas mediante la barra de herramientas del editorTo group, filter, or change the fields in the rule set editor by using the rule set editor toolbar

  • Para expandir las reglas de todos los grupos, elija Expandir todo.To expand the rules in all groups, choose Expand All.

  • Para contraer las reglas en todos los grupos, elija Contraer todo.To collapse the rules in all groups, choose Collapse All.

  • Para cambiar el campo que las reglas se agrupan por, elija el campo de la Group By lista.To change the field that rules are grouped by, choose the field from the Group By list. Para mostrar las reglas desagrupadas, seleccione <ninguno >.To display the rules ungrouped, choose <None>.

  • Para agregar o quitar campos en las columnas de la regla, elija opciones de columna.To add or remove fields in rule columns, choose Column Options.

  • Para ocultar reglas que no se aplican a la solución actual, elija ocultar reglas que no se aplican a la solución actual.To hide rules that do not apply to the current solution, choose Hide rules that do not apply to the current solution.

  • Para alternar entre mostrar y ocultar reglas que tienen asignadas la acción Error, elija Mostrar reglas que pueden generar errores de análisis de código.To switch between showing and hiding rules that are assigned the Error action, choose Show rules that can generate Code Analysis errors.

  • Para alternar entre mostrar y ocultar reglas que tienen asignadas la acción advertencia, elija Mostrar reglas que pueden generar advertencias de análisis de código.To switch between showing and hiding rules that are assigned the Warning action, choose Show rules that can generate Code Analysis warnings.

  • Para alternar entre mostrar y ocultar reglas que tienen asignada la ninguno acción, elija Mostrar reglas que no estén habilitadas.To switch between showing and hiding rules that are assigned the None action, choose Show rules that are not enabled.

  • Para agregar o quitar conjuntos de reglas predeterminados para el conjunto de reglas actual de Microsoft, elija agregar o quitar conjuntos de reglas secundarios.To add or remove Microsoft default rule sets to the current rule set, choose Add or remove child rule sets.

Para crear un conjunto de reglas en un editor de textoTo create a rule set in a text editor

Puede crear un conjunto de reglas personalizado en el texto del editor, almacenar en cualquier ubicación con un .ruleset extensión y se aplican en con el / analyze: conjunto de reglas opción del compilador.You can create a custom rule set in a text editor, store it in any location with a .ruleset extension, and apply in with the /analyze:ruleset compiler option.

En el ejemplo siguiente se muestra que una regla básica establece el archivo que puede usar como punto de partida:The following example shows a basic rule set file that you can use as a starting point:


<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description=" " ToolsVersion="15.0">
  <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
    <Rule Id="C6001" Action="Warning" />
    <Rule Id="C26494" Action="Warning" />
  </Rules>
</RuleSet>