簡體   English   中英

如何在CDT(C代碼)中逐行關閉靜態代碼分析警告?

[英]How do I turn off a static code analysis warning on a line by line warning in CDT (C code)?

我們有一個在Eclipse中使用CDT的項目。 這是一個剛剛導入到Eclipse的舊項目,我想確保我們開始使用靜態代碼分析來發現任何怪異之處。

關鍵是,有很多行會觸發我們只想忽略的警告,主要的是switch語句中的失敗。

我知道如何做到這一點,但是CDT呢? 我可以在單行上方添加單行注釋嗎?

示例:(“案件結束時不中斷”)

  case enChA:  
    nChannel++;
    // I want to ignore this fallthrough       
  case enChB:      
    nChannel++;
    // And this one...
  case enChC:
    nChannel++;
    // And this one...
  case enChD:
    nChannel++;
    // do some more stuff...
    break;

你應該試試

//no break

在下一種情況之前。

這些設置位於窗口->首選項-> C / C ++->代碼分析下。 您可以自定義設置。 例如,如果No break at the end of case選擇No break at the end of case可以定義禁止警告的注釋。 默認情況下是“不間斷”。 因此,恰好將警告消息復制/粘貼到您的案例中的注釋中:

CDT靜態代碼分析

如您所見,文本不必完全匹配,而且似乎也不區分大小寫。

請參閱有關未使用變量的后續問題Unused variable in file scope自定義Unused variable in file scope可以定義應忽略的變量名稱:

在此處輸入圖片說明 有兩個神秘的預定義例外“ @(#)”和“ $ Id”。 不幸的是我找不到任何官方文件,所以我繼續研究資料來源 看起來檢查器只是簡單地測試變量名是否contains()任何指定的異常。 如果是這樣,警告將被禁止。

在Eclipse CDT之外,還有流行的空投技巧。 如果編譯器警告未使用的變量,請將其強制轉換為void。 此操作無效,因此很安全,但是從編譯器的角度來看,現在使用了變量。 我通常將其包裝在宏中,以使我在做什么很清楚,例如

#define UNUSED(var) (void)(var)

void foobar()
{
    int b;     // not used. 
    UNUSED(b); // now it's used
}

解決了。

我只是將我想忽略的警告中的文字添加到該中斷所在的位置上方。

像這樣:

      case enChC:
        ++nChannel;
        //No break at the end of case
      case enChD:
        ++nChannel;

如前所述,在這種特定情況下,可以添加注釋來解決:

//no break

要么:

//no break at the end of case

真正重要的是(不間斷)。

但是,還需要在此案例的末尾與下一個案例之間不要有更多評論,否則它將無法正常工作。 例如,下一種情況仍然會導致警告:

case enChC:
    ++nChannel;
    //No break
    //This second case decrease the value
  case enChD:
    ++nChannel;

您必須升級到Eclipse Oxygen.3(或2.)。

從這些版本開始,只需使用“快速修復”就可以禁止顯示警告/標記。

我遇到了這個問題,我只想消除它們。 我試圖添加/ *不間斷* /,您應確保在下一個“案例”之前添加它。 這是我遇到的問題

這是我使用的解決方案:

要禁用煩人的通知,您需要轉到“首選項”->“ C / C ++”->“編輯器”,然后取消選中“突出顯示非活動代碼”,“鍵入時顯示問題”等選項。希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM