我正在尋找一個 Maven 插件,它將測量模塊中所有單元測驗的運行時復雜性,如果它高于閾值,則構建失敗。我需要這樣做來防止意外增加復雜性,這不會破壞功能,但會使代碼變慢。它存在嗎?
uj5u.com熱心網友回復:
復雜性是關于性能度量隨著特定引數或引數增加而發生的變化。運行一組單元測驗的時間沒有有意義的復雜性度量……因為:
- 對于任何單個測驗,(通常)沒有一組引數可以改變,并且
- 測驗套件的整體性能是通常做完全不同事情的單個測驗的集合。
方法具有復雜性。但是您需要深入了解哪些方法很重要,它們打算如何使用,以及復雜性度量的引數應該是什么,以便為它們生成一些有意義的“經驗”復雜性近似值。我不認為任何人嘗試實作 Maven 或 IDE 插件來做這種事情的可能性不大。或者,如果他們曾經這樣做過,那將是可靠的。
我的建議是:
找出對應用程式性能至關重要的方法和引數。
撰寫一些性能測驗來運行一系列引數的方法。
撰寫一些“利用”代碼來運行測驗,捕獲度量并將它們與您所針對的復雜性類的“預測”進行比較……對于每個度量。
將這些測驗集成到您的測驗制度中。
但要注意撰寫 Java 微基準測驗的陷阱;請參閱如何在 Java 中撰寫正確的微基準測驗?.
實際上……我更好的建議是根本不要嘗試衡量復雜性。相反,只需為您的應用程式創建一些常規基準,并確定一些性能閾值以引起您的注意。畢竟,您的真正目標應該是性能,而不是復雜性。
uj5u.com熱心網友回復:
有checkstyle 度量的源代碼為波紋管的復雜性。該圈復雜度是工具可能最適合您的需求。
BooleanExpressionComplexity-限制布爾運算子(的數量&&,||,&,|和^在運算式)。ClassDataAbstractionCoupling- 測量給定類或記錄中其他類的實體化數量。ClassFanOutComplexity- 檢查給定類/記錄/介面/列舉/注釋依賴的其他型別的數量。CyclomaticComplexity- 根據指定的限制檢查圈復雜度。它是對通過源的可能路徑的最小數量以及所需測驗數量的度量。JavaNCSS- 通過計算非注釋源陳述句 (NCSS) 來確定方法、類和檔案的復雜性。NPathComplexity- 根據指定的限制檢查 NPATH 復雜性。NPATH 度量通過函式(方法)計算可能的執行路徑數。
我們可以啟用他們的 mavenpom.xml檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/388153.html
