好吧,一些玩耍並沒有什麼後,我有一個解決方案。我使用this article來解決這個問題。我使用StyleCop,所以你需要獲取並安裝它。然後,你可以下載我的C#項目MathematicsAnalyzer。
首先,我沒有考慮所有類型轉換不匹配。事實上,我只容納一部分。
基本上,我檢查行是否包含「double」後跟一個空格。我知道這可能會導致錯誤的警告,因爲課程的結束可能是雙重或其他任何事情,但我會讓你知道如何正確隔離類型。
如果發現匹配,我檢查,看看它這個正則表達式匹配:
double[ ][A-Za-z0-9]*[ ]?=(([ ]?[0-9]*d[ ]?/[ ]?[0-9]*;)|[ ]?[0-9]*[ ]?/[ ]?[0-9]*d;)
如果是-not-匹配這個表達式,然後我添加違規。這個正則表達式匹配的是以下任何一種:
- double i = 4d/100;
- double i = 4d/100;
- double i = 4/100d;
- double i = 4/100d;
- double i = 4/100d;
- double i = 4/100d;
- double i = 4d/100;
- double i = 4/100d;
- double i = 4/100d;
以上任何一項都不會造成違規。正如目前所寫的,如果不使用'd',它會拋出違規。您需要添加額外的邏輯來說明顯式強制操作數的其他可能方式。在寫這篇文章時,我剛剛意識到,在兩個操作數上都有'd'很可能會拋出異常。哎呦。
最後,我無法讓StyleCop正確顯示我的違規行爲。它一直給我一個關於不存在的規則的錯誤,即使有了它的第二雙眼睛,我們也找不到解決方案,所以我就黑了。該錯誤顯示您試圖找到的規則的名稱,所以我只是將該規則的名稱作爲描述性內容並在其中包含行號。
要安裝自定義規則,請構建MathematicalAnalyzer項目。關閉Visual Studio並將DLL複製到StyleCop安裝目錄中。當您打開Visual Studio時,您應該在StyleCop設置中看到該規則。我用過的文章的第5步和第6步顯示了在哪裏做到這一點。
在整個解決方案中,這隻會一次得到一個違規,因此您必須修復它顯示的違規行爲,然後再次運行StyleCop以查找下一個違規。可能有一種解決辦法,但我用盡果汁,停在這裏。
享受!
這取決於你使用的編譯器。錯誤消息和警告不是該語言的內置功能,而是編譯器添加的內容。如果你使用的編譯器不支持它,那麼不,這是不可能的。 – Hoeloe
有[uservoice ticket](http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2813345-add-a-warning-when-promoting-the-result-of-integer)詢問爲此功能。 –
我使用.NET 4.0和Visual Studio 2010提供的C#編譯器。 – Larry