Partilhar via


Visão geral de anotação

Anotações permitem as funções declarar o comportamento explicitamente.Desenvolvedores podem incorporar anotações funcionais em seus códigos-fonte para declarar explicitamente os contratos entre Implementações (receptor) e Clientes (chamador).A informação adicional fornecida pelo o desenvolvedor sobre as condições Pre e Post dos parâmetros das funções e tipos de retorno é usada pela ferramenta de análise de código para detectar violações do contrato entre o chamador e o receptor.Se você especificar anotações sobre a declaração da função então você não tem de especificá-los sobre a definição da função.

Atributos

O esquema de anotação é implementado como atributos do compilador VC ++.Os seguintes dois atributos fornecem a base para anotação:

  • Pre

Cada instância de um atributo Pre especifica um conjunto de propriedades para o parâmetro com anotações.A anotação a seguir usa o atributo Pre com a propriedade Valid:

void f ( [ Pre (Valid = Yes) ] int pWidth);

Anotando o parâmetro pWidth, a função exige chamadores para passar um valor inteiro válido. De um valor integral — ou ponto flutuante — significa que o parâmetro foi inicializado e não contém dados de lixo.

  • Post

Cada instância de um atributo Post especifica um conjunto de propriedades para o parâmetro com anotações ou valor de retorno.A anotação seguinte usa o atributo POST com a MustCheck propriedade:

[returnvalue:Post(MustCheck=Yes)] bool f();

Anotando o valor retornado de uma função, o chamador é necessário para examinar o valor retornado da função; portanto, uma telefonar como a seguir gera C6031:

void main( )
{
  // code
  f ( ); // warning 6031
  // code 
}

Além os atributos Pre e Post, os dois seguintes atributos estão disponíveis:

  • O atributo FormatString é fornecido para especificar informações de formato.Ele é usado com a propriedade Style.

  • O atributo InvalidCheck é fornecido para determinar se um valor de retorno de uma função é válido ou inválido.Ele é usado com a propriedade Value.

Propriedades

Existem várias propriedades que podem ser especificadas com os atributos Pre e Post.Mesmo embora várias propriedades possam ser usadas em ambos atributos Pre e Post, a propriedade MustCheck pode ser aplicada apenas para valor de retorno da função e deve ser especificada com o atributo Post.Antes de usar uma propriedade específica, você deve ler a documentação para aprender sobre os tipos de atributos e dados suportados por ela.Para obter mais informações, consulte Propriedades de anotação.

Usando anotação em C

Para usar anotações em arquivos de origem C, inclua o seguinte arquivo:

#include <CodeAnalysis/SourceAnnotations.h>

Em seguida, anote a função como mostra o código a seguir:

void f ([ SA_Pre (Valid = SA_Yes) ] int pWidth );

Observação:   No código C, você deve usar o prefixo SA_ em atributos e valores enumerados.

Usando anotação em C++

No C++, após adicionar o #include <CodeAnalysis/SourceAnnotations.h> arquivo, adicione o namespace seguinte:

using namespace vc_attributes;

Em seguida, anote a função como mostra o código a seguir:

void CMyClass::f ([ Pre (Valid = Yes) ] int pWidth )
Observação:

No código C++, você não tem de usar o SA_prefix para valores enumerados, por exemplo, Yes, No, e Maybe.Entretanto, você deve usar o SA_prefix em um cabeçalho que será usado tanto para código C e C++.Em C++, anotações não podem ser herdadas pela classe derivada.

Consulte também

Referência

C6031