Q
跨版本行匹配
1
A
回答
0
爲什麼你需要這樣做?如果您使用體面的源代碼版本控制,您應該可以訪問舊版本的代碼,您可以簡單地提供一個鏈接,以便人們可以在原始位置查看錯誤。事實上,我在這個系統中看到的主要問題是,該錯誤可能已經被修復,但是您的自動線路跟蹤代碼將指向一條線,並說有一個錯誤。看起來這個系統會很痛苦,並且在實踐中不會提供很多幫助。
0
我的建議是:不要試圖追蹤行號,因爲您觀察到的行數可能隨軟件更改而快速失去同步,您應該用唯一標識符修飾每個斷言(或其他感興趣的行)。
假設你使用C,在斷言的情況下,這可能就像將assert(x == 42);
改爲assert(("check_x", x == 42));
一樣簡單 - 這在功能上是相同的,因爲C中的逗號操作符的語義以及一個字符串文字將始終評估爲true。
當然這意味着您需要確定先驗您希望跟蹤的項目。但是鑑於沒有一種可靠的方法來匹配不同版本的源代碼行數(我的意思是說,對於您可以提出的任何機制,我相信我可以提出這種機制做錯事情的情況),我認爲這是是你能做的最好的。
另一個想法:如果你使用C++,你可以使用RAII非常優雅地跟蹤動態範圍。基本上,你有一個Track
類,它的構造函數接受一個描述範圍的字符串,並將其添加到當前活動作用域的全局堆棧中。析構函數彈出堆棧頂部的元素。最終的組成部分是一個靜態函數Track::getState()
,它簡單地返回所有當前活動作用域的列表 - 這可以從異常處理程序或其他錯誤處理機制中調用。
相關問題
- 1. 匹配跨多行
- 2. 跨表匹配行
- 3. Dart版本控制 - 無匹配版本
- 4. httpd phpinfo.php中的PHP版本與命令行版本不匹配
- 5. 模塊版本不匹配
- 6. Libtool版本不匹配
- 7. 大會版本不匹配
- 8. 短切版本匹配
- 9. SQL Server版本不匹配
- 10. 不匹配的DLL版本?
- 11. pg_dump的版本不匹配
- 12. Ruby的版本不匹配
- 13. 的版本不匹配
- 14. 豬版本不匹配(Hadoop)
- 15. NSRegularExpression - 匹配版本號
- 16. Vue.js 2.3.2版本不匹配
- 17. GuestAdditions版本不匹配
- 18. ValidationException類版本不匹配
- 19. MPICH2 smpd版本不匹配
- 20. 的Protobuf版本不匹配
- 21. System.IdentityModel.Tokens.Jwt版本不匹配
- 22. TensorFlow protobuf版本不匹配
- 23. aclocal的版本不匹配
- 24. Nuget.Core.dll版本號不匹配
- 25. Silverlight版本不匹配
- 26. 跨列匹配值
- 27. 索引匹配跨多列匹配
- 28. 跨MSVCRT版本分配C++對象
- 29. gulp本地和CLI版本不匹配
- 30. 確定跨多列的行匹配
我在想的並不是那麼多的按行數來跟蹤特定的錯誤(棘手的錯誤有多少次*有一行代碼),但更多的是跟蹤統計信息關於事情發生的地方檢測。例如;什麼主張最常被擊中?斷言行程時,堆棧上最常見的代碼行是什麼?那種事情。能夠將這種東西從一個版本組合到另一個版本會很好。 – BCS 2010-04-09 17:18:58