Handle function names in backtraces

This commit is contained in:
Gaël Métais
2015-01-19 12:16:56 +01:00
parent e6bd0d0006
commit cac36727e8
4 changed files with 19 additions and 8 deletions
+1
View File
@@ -122,6 +122,7 @@
}
.offenders .offenderButton .backtrace {
white-space: nowrap;
padding: 0.5em;
}
.offenders .offenderButton:hover {
border-bottom-left-radius: 0;
+1
View File
@@ -137,6 +137,7 @@
.backtrace {
white-space: nowrap;
padding: 0.5em;
}
&:hover {
+13 -6
View File
@@ -107,13 +107,19 @@ var OffendersHelpers = function() {
var parts = null;
for (var i=0 ; i<traceArray.length ; i++) {
parts = /^([^ ]+):(\d*)$/.exec(traceArray[i]);
parts = /^(([\w$]+) )?([^ ]+):(\d+)$/.exec(traceArray[i]);
if (parts) {
results.push({
file: parts[1],
line: parseInt(parts[2], 10)
});
var obj = {
file: parts[3],
line: parseInt(parts[4], 10)
};
if (parts[2]) {
obj.functionName = parts[2];
}
results.push(obj);
} else {
return null;
}
@@ -131,7 +137,8 @@ var OffendersHelpers = function() {
var html = '<div class="offenderButton opens">backtrace<div class="backtrace">';
backtraceArray.forEach(function(backtraceObj) {
html += '<div><a href="' + backtraceObj.file + '" target="_blank">' + backtraceObj.file + '</a> line ' + backtraceObj.line + '</div>';
var functionName = (backtraceObj.functionName) ? backtraceObj.functionName + '() ' : '';
html += '<div>' + functionName + '<a href="' + backtraceObj.file + '" target="_blank">' + backtraceObj.file + '</a> line ' + backtraceObj.line + '</div>';
});
return html + '</div></div>';
};
+4 -2
View File
@@ -137,7 +137,7 @@ describe('offendersHelpers', function() {
describe('backtraceToArray', function() {
it('should transform a backtrace into an array', function() {
var result = offendersHelpers.backtraceToArray('http://pouet.com/js/jquery.footer-transverse-min-v1.0.20.js:1 / http://pouet.com/js/main.js:1');
var result = offendersHelpers.backtraceToArray('http://pouet.com/js/jquery.footer-transverse-min-v1.0.20.js:1 / callback http://pouet.com/js/main.js:1');
result.should.deep.equal([
{
@@ -145,6 +145,7 @@ describe('offendersHelpers', function() {
line: 1
},
{
functionName: 'callback',
file: 'http://pouet.com/js/main.js',
line: 1
}
@@ -168,12 +169,13 @@ describe('offendersHelpers', function() {
line: 1
},
{
functionName: 'callback',
file: 'http://pouet.com/js/main.js',
line: 1
}
]);
result.should.equal('<div class="offenderButton opens">backtrace<div class="backtrace"><div><a href="http://pouet.com/js/jquery.footer-transverse-min-v1.0.20.js" target="_blank">http://pouet.com/js/jquery.footer-transverse-min-v1.0.20.js</a> line 1</div><div><a href="http://pouet.com/js/main.js" target="_blank">http://pouet.com/js/main.js</a> line 1</div></div></div>');
result.should.equal('<div class="offenderButton opens">backtrace<div class="backtrace"><div><a href="http://pouet.com/js/jquery.footer-transverse-min-v1.0.20.js" target="_blank">http://pouet.com/js/jquery.footer-transverse-min-v1.0.20.js</a> line 1</div><div>callback() <a href="http://pouet.com/js/main.js" target="_blank">http://pouet.com/js/main.js</a> line 1</div></div></div>');
});
it('should display "no backtrace"', function() {