Comment : spécifier des informations de code supplémentaire en utilisant __analysis_assume
Vous pouvez fournir des conseils à l'outil d'analyse du code pour le code C/C++ qui aideront à réaliser le processus d'analyse et à réduire les avertissements. Pour fournir des informations supplémentaires, utilisez la fonction suivante :
__analysis_assume(expr)
expr- toute expression supposée prendre la valeur True.
L'outil d'analyse du code suppose que la condition représentée par l'expression est True lorsque la fonction apparaît et le demeure jusqu'à ce que l'expression soit altérée, par exemple, par assignation à une variable.
Notes
__analysis_assume n'a pas d'effet sur l'optimisation du code. À l'extérieur de l'outil d'analyse du code, __analysis_assume est défini comme une absence d'opération.
Exemple
Le code suivant utilise __analysis_assume pour corriger l'avertissement d'analyse du code C6388 :
#include<windows.h>
#include<codeanalysis\sourceannotations.h>
using namespace vc_attributes;
// calls free and sets ch to null
void FreeAndNull(char* ch);
//requires pc to be null
void f([Pre(Null=Yes)] char* pc);
void test( )
{
char *pc = (char*)malloc(5);
FreeAndNull(pc);
__analysis_assume(pc == NULL);
f(pc);
}