2017-08-04 102 views
0

我有一個類(構造函數),我需要暴露在業務層,但它需要仔細考慮和使用理由(任何其成員)。我希望它在默認情況下生成編譯器警告,並將我們的團隊過程建立爲記錄內聯使用對齊和pragma suppress或類似內容。自定義可壓縮編譯器警告很少必要的方法

理想情況下,警告將自定義文本,例如:

警告:此代碼繞過用戶的安全過濾器。如果您打算使用 ,請在此處評論此代碼如何排除 敏感數據的曝光,然後跟隨#pragma suppress。

此外,理想情況下,消息顯示時不需要團隊成員將任何東西安裝到他們的VS.我們使用VS 2017

我目前的代碼標記爲[Obsolete],但它的語義不準確,需要用#pragma warning disable 0618後跟#pragma warning enable 0618來包裝一行或多行。我寧願鼓勵每行的單獨解析,類似於#pragma suppress語法。

如果您懷疑存在重複問題,請閱讀以下內容: 請注意,我已經回顧了其他「類似」問題。有些人試圖將代碼標記爲需要審查(接受的答案是這是對編譯器警告的不當使用)。有些確實代表過時的代碼,所以答案很明顯。有些人看到複雜的規則,比如「你還必須調用兄弟姐妹的方法」。

+1

請提供信息(如建議或理由)downvotes。謝謝。 – shannon

+1

您可能對https://stackoverflow.com/questions/154109的回答和相關問題感興趣。看起來你可以用Roslyn解決它 – devio

回答

1

我認爲這是處理大量遺留代碼的地方的常見問題,但我仍然沒有找到理想的解決方案。我過去所做的工作,至少對我的團隊有效,就是使用Visual Studio的代碼映射功能。看看Map dependencies across your solutions。此代碼映射使用Microsoft的DGML,它是用於在對象之間創建鏈接的XML樣式文檔。如果你編寫了一個工具或者腳本來解析這個文檔,查找有問題的構造函數的用法並在CI構建中運行它,那麼可以跟蹤它的使用情況,並在檢測到新的使用時標記構建/提交。這樣,您不必將其安裝在任何開發人員的機器上,除非您是構建管理員,否則不會關閉此步驟。