Jak: Określ dodatkowe informacje o kodzie za pomocą __analysis_assume
Możesz dostarczyć podpowiedzi dla narzędzia analizy kodu języka C/C++, które pomogą w procesie analizy i zmniejszą liczbę ostrzeżeń.Aby dostarczyć dodatkowe informacje, użyj poniższych funkcji:
__analysis_assume(expr)
expr - dowolne wyrażenie, za którego wartość oszacowaną przyjmuje się prawdę.
Narzędzie analizy kodu przyjmuje, że warunek reprezentowany przez wyrażenie jest prawdziwy w punkcie, w którym pojawiła się funkcja i pozostaje prawdziwy, dopóki wyrażenie nie zostanie zmienione, na przykład przez przypisanie do zmiennej.
[!UWAGA]
Funkcja __analysis_assume nie ma wpływu na optymalizację kodu.Poza narzędziem analizy kodu, funkcja __analysis_assume jest zdefiniowana jako funkcja, która nie wykonuje żadnych operacji.
Przykład
Poniższy kod wykorzystuje __analysis_assume do poprawienia ostrzeżeń analizy kodu 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);
}