2013-08-18 61 views
71

我正在使用Visual Studio 2013預覽版,儘管我確信我已經在早期版本中看到過它。使用嚮導創建新項目時,我選擇C++,Win32控制檯應用程序,並且可以選擇在我的項目上啓用安全開發生命週期檢查。有人可以解釋這個選項到底對我的代碼/項目有什麼作用嗎?什麼是Visual Studio中的安全開發生命週期檢查選項?

回答

67

/sdl開關被描述here。它將一些警告轉化爲錯誤,這不會影響您的代碼。此外,它更積極地應用/GS檢查。

不要期望太多。 Microsoft SDL實際上是針對20世紀80年代風格C編程的一種解決方法。即使你使用20世紀的C++,你也不需要它。例如。 operator+(std::string, std::string)既安全又便攜。相比之下,微軟的SDL解決方案不是可移植的,也不是安全的 - /GS背後的想法是在運行時發現C字符串處理錯誤,並中止程序,限制後果但不保證安全。

+0

字符串不是內存錯誤的唯一原因。/sdl可以幫助您識別單位變量的使用等等。 –

+0

@JørgenFogh:您正在描述C4700警告,您不需要/ sdl。這是一級警告;您需要在C4700消失之前關閉** all **警告。如果您的開發人員正在這樣做,您就會遇到SDL無法解決的問題。 – MSalters

+0

我記得在某處閱讀警告變得更加詳細,因爲/ sdl打開了一個更詳細的靜態分析。我不記得我在哪裏閱讀它。 –

2

Microsoft安全開發生命週期是Microsoft使用和提議的軟件開發過程,旨在降低軟件維護成本並提高軟件安全相關錯誤的軟件可靠性。

這些可能有所幫助:

http://download.microsoft.com/download/B/5/A/B5A89F4C-D591-4AAB-BF45-D818D80527B6/SDLServices2011.pdf

http://msdn.microsoft.com/en-us/library/windows/desktop/84aed186-1d75-4366-8e61-8d258746bopq.aspx

+7

這是很多的材料。什麼檢查選項實際上做我的代碼? –

相關問題