最近我正在調試「poof-all-customer-data-is-gone」問題。不需要太多時間就可以發現一個錯誤的分支導致了一行代碼Directory.Delete(customerRoot, true)
。災難性的產品線是由一個普通的GUI開發人員編寫的。沒有太多的線路會導致這樣的災難。所以我的問題是如何防止這個特定的電話。 (DirectoryInfo.Delete()
是第二個)。如何防止或攔截對Directory.Delete(path,true)的調用
這是我優先考慮的可能的解決方案列表
- 沒有第三方改變構建過程
- 運行時攔截,沒有第三方
- 運行時攔截與第三方(編譯錯誤沒有改變構建過程)
- 編譯錯誤與第三方(我猜PostSharp會這樣做)
- 關於GUI開發者關於如何客戶的教育研討會查看他們的數據
還有其他想法嗎?
我會提到我們的系統有一個專門的服務(驗證和記錄)文件/文件夾刪除。
無論是從技術角度還是從社會角度來看,您都可以在這裏實施許多防線。但在這種特殊情況下,您可能會考慮將ACL標記爲只讀或標記爲只讀的任何文件資源,以確保不會意外刪除。或者也許可以通過有限訪問系統來運行GUI? – reuben