是否有任何工具可用於計算Javascript中的循環複雜度?計算Javascript的環複雜度
我發現這是一個非常有用的指標,在過去,而在服務器端代碼的工作,並希望能夠使用它的客戶端的JavaScript我寫的。
是否有任何工具可用於計算Javascript中的循環複雜度?計算Javascript的環複雜度
我發現這是一個非常有用的指標,在過去,而在服務器端代碼的工作,並希望能夠使用它的客戶端的JavaScript我寫的。
我一直在研究一個JavaScript靜態代碼分析工具,它可以確定JavaScript的圈複雜度。您可以在這裏嘗試在線版本的jsmeter:http://jsmeter.info
因爲圈複雜度評估計算關鍵字 數量「的話,交換機,而突破」等。每一個工具,用C工作將做的工作,比如 sourcemonitor: http://www.campwoodsw.com/sourcemonitor.html
其實,在JavaScript中更嘗試modulize你的代碼,你越會慢下來,所以把它當作一粒鹽;)
編輯: 我真的不明白這是怎麼回事這個答案,我得到另一個downvote,當我在我的答案,我告訴ag OOD工具,用於計算javascript中的圈複雜度, ,這尤其適用。
對於第二種說法,我的是來自經驗評論,我從來沒有告訴不modulize你的js代碼,我只告訴使注意力做,因爲往往有一個權衡速度,當我說話的速度我的意思是2個不同的放緩可能發生的:在下載時間和執行時間(以及類似PDA /智能手機,這是重要的慢速設備)。
由於這樣的工具,經常開車到開發商編寫更多的代碼試圖追逐較小的指數可能, 但在JS更多的代碼遺憾,這意味着放緩可能發生,這些工具的過度使用是壞。 這些工具可以給你提示,其中你的代碼可以改進,但你必須掌握如何使用該工具,而不是盲目依賴它。
所以,如果你再downvote我,請寫在你解釋你爲什麼這樣做,討論只能從中受益評論,感謝您和遺憾的發泄。
模塊化你的代碼是慢下來?這有什麼意義? – MDCore 2008-10-17 04:33:06
其實它有意義,因爲在JavaScript寫更多的代碼意味着更多的下載時間(是一個權衡所有知道btw),我寫的JavaScript代碼運行在非常緩慢的架構,所以,對我而言,這是一個重要的因素。我沒有說「不要模塊化」,我只是說「被警告」 – kentaromiura 2008-10-17 06:29:44
我沒有降低你的視覺效果,但它似乎並不像模塊化那樣降低了JavaScript中的代碼,足以證明你的代碼在程序風格。但我想這是一個個案的基礎。 – 2009-12-13 19:41:39
您可以使用http://www.blunck.info/ccm.html的ccm工具。
它沒有java腳本,c/C++和c#。它是免費的,可以在Windows上運行(也可以在Linux和Mac OS X上運行 - 使用單一框架)。
現在有也是衡量尺度:https://github.com/calmh/yardstick
它試圖計算圈複雜度爲慣用的Javascript,比處理例如jscheckstyle更多的情況下。
我幫着寫JavaScript的項目進行軟件的複雜性分析的工具:
它報告了一堆不同複雜程度的指標:行代碼,大量的參數,圈複雜度,圈密度, Halstead複雜性度量,可維護性指數,一階密度,變化成本和核心尺寸。
它在MIT許可證下發布,使用Node.js和Esprima JavaScript解析器構建。最近added support
npm i -g complexity-report
JSHint計算代碼度量:它可以通過NPM安裝,就像這樣。您可以爲the number of formal parameters allowed(maxparams),how deeply nested code blocks should be(MAXDEPTH),the number of statements allowed per function(maxstatements)設置的最大值,以及the maximum cyclomatic complexity(maxcomplexity)。
每功能允許形式參數的最大數量
/*jshint maxparams:3 */
function login(request, onSuccess) {
// ...
}
// JSHint: Too many parameters per function (4).
function logout(request, isManual, whereAmI, onSuccess) {
// ...
}
每功能允許嵌套代碼塊的最大數量
/*jshint maxdepth:2 */
function main(meaning) {
var day = true;
if (meaning === 42) {
while (day) {
shuffle();
if (tired) { // JSHint: Blocks are nested too deeply (3).
sleep();
}
}
}
}
每功能允許語句的最大數目
/*jshint maxstatements:4 */
function main() {
var i = 0;
var j = 0;
// Function declarations count as one statement. Their bodies
// don't get taken into account for the outer function.
function inner() {
var i2 = 1;
var j2 = 1;
return i2 + j2;
}
j = i + j;
return j; // JSHint: Too many statements per function. (5)
}
的http://jshint.com新版本出來,並具有很好的圈複雜度計算器
我提出我的jsmeter工具,一個新的網站:http://jsmeter.info – Noah 2010-08-22 02:26:15