簡體   English   中英

如何確定項目/解決方案中最常使用的代碼?

[英]How to determine which code in a project/solution is the most often used?

如果我有一個包含多個c#項目的現有解決方案,是否有任何靜態分析工具可以幫助我確定哪些代碼區域最常用?

我想使用這些信息來確定哪些區域應該首先增加測試覆蓋率。

我已經看過一些靜態分析工具,但它們似乎主要集中在復雜性,編碼約定,代碼復制等方面。

或者,如果沒有任何可用的分析工具可以做到這一點,您是否有任何關於如何確定我應該首先關注測試的代碼的建議?

謝謝!

編輯:只是為了澄清,我正在尋找的不是代碼覆蓋。 我想了解我最常使用的應用程序的哪些部分,以便我可以反過來專注於改善這些領域的覆蓋范圍。 我試圖避免只為那些還沒有的區域編寫測試,因為它們可能是不經常執行的邊緣情況。

即使是試圖弄清楚在運行時發生的事情的靜態分析工具通常也不會嘗試估計一段代碼的執行頻率。 這個主題很難實現!

但是動態分析工具(例如,依賴於代碼的透明檢測或使用采樣的分析工具)可以告訴您,在一次或幾次“典型”執行(您提供您判斷的典型條目)之后,這個或那個函數的頻率被執行了。

請參閱Wikipedia上的性能分析(計算機編程)

如果我理解正確的問題,那么您正在尋找一個分析器。 試試EQATEC Profiler吧。 免費。

它原本打算在發貨之前分析應用程序(通過測量方法的執行時間來檢測瓶頸等),所以我不確定它是否適合在高效環境中的應用程序。 至少它會更改您的代碼以進行性能分析,這可能是不需要的。 你應該看看這個。

代碼覆蓋率似乎是您想要的。

NCover是一種流行的.NET代碼覆蓋工具,如果你負擔得起的話。

如果你想看到的是使用正是SD C#測試覆蓋工具

如果您想查看它的使用頻率SD C#Profiler工具

你所要求的是根本無法准確做到的。 執行某些操作的次數通常取決於在運行時輸入的數據。 您可以從靜態分析工具中獲得最佳效果

  1. 靜態確定時的直接答案
  2. 否則是O(N)風格分析
即使是后者也很難整體上做得很好。 例如,它需要知道(龐大且不斷擴展的).NET庫中基本上每個函數的復雜性。 其中一些甚至很難描述。

例如,分配一塊內存需要多長時間? 好吧,通常它通常幾乎是恆定的時間 - 但是分配總是可能觸發垃圾收集周期,在這種情況下,所花費的時間將(大致)與自上次分配以來分配的仍在使用的對象數量成比例GC循環......

“Profiler”是您正在尋找的; 您選擇的是由您自己決定的。

我已經使用惠普的診斷服務器來做到這一點,雖然它需要花錢。 它會告訴我什么方法被稱為多少次,以及在它們中花費的平均和最壞情況時間。

作為一個重要的安全提示,運行探查器會降低代碼的執行速度; 它不適合長期安裝到生產環境中。

如果覆蓋范圍不是您所尋找的,那么您可以使用兩件事:

  1. 正如建議的剖析器和運行預測測試場景。
  2. 使用性能計數器,這將以更永久的解決方案結束。 這些很難實現,但通過分析計數器報告有助於診斷性能增量。 實現它們的一種方法是包裝邊界並從那些包裝中管理計數器。 要小心,在新項目中集成比在現有項目中更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM