我有一個關於這個診斷的好處的問題。 一位用戶建議我們在PVS-Studio分析器中以C風格實現所有顯式類型 轉換的搜索。 也就是說,診斷檢測這樣的結構:以C風格搜索顯式類型轉換:a =(int)b;
int *x = (int *)y;
float a = float(b);
float c = (float)(d);
其目的是與他們的安全 版本替換所有這些轉換 - 的reinterpret_cast /的static_cast/const_cast會。在這種重構的過程 期間,代碼中的一些缺陷可能被很好地檢測到。
當然,這並不是檢測到嚴重錯誤,如果我們 執行此診斷,它將在[客戶的 特定請求]部分並默認禁用。
但我甚至懷疑這個診斷的好處。所以我決定詢問 其他用戶:其他用戶是否需要此選項來搜索C風格的顯式 類型轉換?有人喜歡在他們的代碼中執行這種重構的 嗎?
'float a = float(b);'不是C風格的演員。這個語法由C++引入。 – Nawaz
@Nawaz但是它的語義與C風格的演員*相同,因此它有相同的問題。 –
如果你的風格指南說,「不要使用C風格的演員」,那麼能夠以自動化的方式強制執行該風格將是有用的。要求分析免於此類警告將實現該目標,所以對於任何想避免它們(即使它們不是重構)的人都是有用的。 –