我正在將舊應用程序移植到64位Linux上。有很多地方long和int可以互換使用,而且源代碼相當大,所以很難通過測試來捕獲所有這些地方。我打算使用插件來靜態分析代碼並修復不安全的代碼。其中一種模式是確定不安全強制轉換的警告鐺
void foo(unsigned long *x){
*x = *x + 1; //x is pointing to a 32-bit space
return;
}
int main(){
unsigned int x = ;
foo(reinterpret_cast<unsigned long*>(&x));
}
我們使用gcc-4.2.1來構建我們的應用程序。即使使用-Wall和-Wextra,它也不會警告我這些類型的演員。
我試着用「一切皆有可能,但沒有成功」的鏗鏘奔跑。有沒有一個標誌在警告我這些風險明確的演員類型?如果不是,我該如何去添加一個?
感謝迪特馬爾一堆錯誤!我希望我能參加,但我不會留在附近。我會看看這個例子,並嘗試添加一條規則。 –
我做了這樣的gcc -Dreinterpret_cast = static_cast myfile.cpp,這開始拋出我需要的錯誤。我很確定這對叮噹也是有用的。我會繼續併爲此添加一條規則。 –