如果項目包含代碼進行反射,是否可以使VS2013 csc或msbuild生成警告或錯誤?限制反射
這意味着對我們自己的開發人員的不良做法(例如沒有工作經驗的畢業生或只是防禦不應該被提交的調試代碼的防禦)的防禦性限制。
如果項目包含代碼進行反射,是否可以使VS2013 csc或msbuild生成警告或錯誤?限制反射
這意味着對我們自己的開發人員的不良做法(例如沒有工作經驗的畢業生或只是防禦不應該被提交的調試代碼的防禦)的防禦性限制。
我不相信全面禁止反思。
但是,您可以使用自定義任務來實現該目標,但這很難實現,因爲它必須通過源代碼來查找使用反射的位置併發出警告。
http://blogs.msdn.com/b/msbuild/archive/2006/01/21/515834.aspx
工具一樣的FxCop,或聲納也許能幫助您自定義的規則來分析代碼。
您可以簡單地在所有源文件中爲System.Reflection添加grepping(Windows上的findstr)前/後構建步驟。他們要麼必須將其放入使用聲明中,要麼完全限定代碼使用情況,以便能夠捕獲這兩種情況。當然,如果你的代碼中有合法的System.Reflection用法,它可能會標記出許多誤報。棘手的部分是反轉findstr的返回值(如果找不到字符串,通常會返回1)。試試這個: findstr /s /L "System.Reflection" *.cs && echo Error: using System.Reflection is not allowed. && set ERRORLEVEL=1 || set ERRORLEVEL=0
你可以添加更多的通配符和/或根據需要使它們更具體。
你可以做一個相當大數量的反射,而不包括反射命名空間。另外,「動態」無異於反思。 – 2015-01-27 00:36:54
是的。我的想法會錯過'var foo = bar.GetType()。Assembly'這是非常基本的反射。捕捉這將需要相當複雜的規則。 – 2015-01-27 17:09:45
靜態代碼分析規則是否足夠? – BradleyDotNET 2015-01-26 23:52:44
我不知道你可以寫這些,我會看看它,謝謝:) – Mirek 2015-01-27 14:08:31