From f80bcfccfb676107f182b1b62e13bc1fb66ff1ef Mon Sep 17 00:00:00 2001 From: Johan Walles Date: Fri, 21 Nov 2014 16:31:57 +0100 Subject: [PATCH 1/6] Work in progress show top running methods --- analyze.js | 53 +++++++++++++++++++++++++++++------------------------ index.html | 10 +++++++++- tests.js | 28 ++++++++++++++++++++-------- 3 files changed, 58 insertions(+), 33 deletions(-) diff --git a/analyze.js b/analyze.js index 9e7adac..c1d0422 100644 --- a/analyze.js +++ b/analyze.js @@ -23,15 +23,13 @@ function analyzeTextfield() { // jshint ignore: line var text = document.getElementById("TEXTAREA").value; var analyzer = new Analyzer(text); - setOutputHtml(analyzer.toHtml()); + setHtml("OUTPUT", analyzer.toHtml()); var ignores = analyzer.toIgnoresHtml(); - if (ignores.length > 0) { - setIgnoredHtml(ignores); - } else { - var ignoredDiv = document.getElementById('IGNORED_DIV'); - ignoredDiv.style.display = 'none'; - } + setHtml("IGNORED", ignores); + + var running = analyzer.toRunningHtml(); + setHtml("RUNNING", running); } function htmlEscape(unescaped) { @@ -41,20 +39,12 @@ function htmlEscape(unescaped) { return escaped; } -function setOutputHtml(html) { - var output = document.getElementById("OUTPUT"); - output.innerHTML = html; +function setHtml(name, html) { + var destination = document.getElementById(name); + destination.innerHTML = html; - var outputDiv = document.getElementById('OUTPUT_DIV'); - outputDiv.style.display = 'inline'; -} - -function setIgnoredHtml(html) { - var ignoredTable = document.getElementById("IGNORED"); - ignoredTable.innerHTML = html; - - var ignoredDiv = document.getElementById('IGNORED_DIV'); - ignoredDiv.style.display = 'inline'; + var div = document.getElementById(name + '_DIV'); + div.style.display = (html.length > 0) ? 'inline' : 'none'; } // Extracts a substring from a string. @@ -92,7 +82,7 @@ function Thread(line) { var match = line.match(THREAD_STATE); if (match !== null) { this.threadState = match[1]; - this.running = (this.threadState === "RUNNING") && (this.state === 'running'); + this.running = (this.threadState === "RUNNABLE") && (this.state === 'runnable'); return true; } @@ -196,9 +186,11 @@ function StringCounter() { var string = ""; var countedStrings = this.getStrings(); for (var i = 0; i < countedStrings.length; i++) { + if (string.length > 0) { + string += '\n'; + } string += countedStrings[i].count + - " " + countedStrings[i].string + - '\n'; + " " + countedStrings[i].string; } return string; }; @@ -385,7 +377,7 @@ function Analyzer(text) { }; this.toIgnoresString = function() { - return this._ignores.toString(); + return this._ignores.toString() + '\n'; }; this.toIgnoresHtml = function() { @@ -405,6 +397,19 @@ function Analyzer(text) { return this._getCountedRunningMethods().toString(); }; + this.toRunningHtml = function() { + var html = ""; + var countedRunning = this._getCountedRunningMethods(); + for (var i = 0; i < countedRunning.length; i++) { + html += '' + + countedRunning[i].count + + '' + + " " + htmlEscape(countedRunning[i].string) + + "\n"; + } + return html; + }; + this._getCountedRunningMethods = function() { var countedRunning = new StringCounter(); for (var i = 0; i < this.threads.length; i++) { diff --git a/index.html b/index.html index 119d23c..236e03a 100644 --- a/index.html +++ b/index.html @@ -36,6 +36,14 @@

Java Thread Dump Analyzer

This page is client-side only, and no data will leave your computer when you click Analyze.

+ +