aboutsummaryrefslogtreecommitdiff
path: root/lib/compilers/java.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compilers/java.js')
-rw-r--r--lib/compilers/java.js54
1 files changed, 28 insertions, 26 deletions
diff --git a/lib/compilers/java.js b/lib/compilers/java.js
index 18e89947f..fc45a2975 100644
--- a/lib/compilers/java.js
+++ b/lib/compilers/java.js
@@ -23,9 +23,9 @@
// POSSIBILITY OF SUCH DAMAGE.
const BaseCompiler = require('../base-compiler'),
- argumentParsers = require("./argument-parsers"),
+ argumentParsers = require('./argument-parsers'),
fs = require('fs-extra'),
- utils = require('../utils.js'),
+ utils = require('../utils'),
path = require('path'),
logger = require('../logger').logger;
@@ -46,7 +46,7 @@ class JavaCompiler extends BaseCompiler {
async objdump(outputFilename, result, maxSize) {
const dirPath = path.dirname(outputFilename);
const files = await fs.readdir(dirPath);
- logger.verbose("Class files: ", files);
+ logger.verbose('Class files: ', files);
const results = await Promise.all(files.filter(f => f.endsWith('.class')).map(async classFile => {
const args = [
// Prints out disassembled code, i.e., the instructions that comprise the Java bytecodes,
@@ -54,13 +54,15 @@ class JavaCompiler extends BaseCompiler {
'-c',
// Prints out line and local variable tables.
'-l',
- classFile
+ classFile,
];
const objResult = await this.exec(this.compiler.objdumper, args, {maxOutput: maxSize, customCwd: dirPath});
- const oneResult = {};
- oneResult.asm = objResult.stdout;
+ const oneResult = {
+ asm: objResult.stdout,
+ };
+
if (objResult.code !== 0) {
- oneResult.asm = "<No output: javap returned " + objResult.code + ">";
+ oneResult.asm = '<No output: javap returned ' + objResult.code + '>';
}
return oneResult;
}));
@@ -82,7 +84,7 @@ class JavaCompiler extends BaseCompiler {
filters.binary = true;
return [
- '-Xlint:all'
+ '-Xlint:all',
];
}
@@ -99,24 +101,24 @@ class JavaCompiler extends BaseCompiler {
const filteredOptions = [];
let toSkip = 0;
- const oneArgForbiddenList = [
+ const oneArgForbiddenList = new Set([
// -d directory
// Sets the destination directory for class files.
- "-d",
+ '-d',
// -s directory
// Specifies the directory used to place the generated source files.
- "-s",
+ '-s',
// --source-path path or -sourcepath path
// Specifies where to find input source files.
- "--source-path", "-sourcepath"
- ];
+ '--source-path', '-sourcepath',
+ ]);
for (const userOption of userOptions) {
if (toSkip > 0) {
toSkip--;
continue;
}
- if (oneArgForbiddenList.indexOf(userOption) !== -1) {
+ if (oneArgForbiddenList.has(userOption)) {
toSkip = 1;
continue;
}
@@ -129,7 +131,7 @@ class JavaCompiler extends BaseCompiler {
processAsm(result) {
// Handle "error" documents.
- if (result.asm.indexOf("\n") === -1 && result.asm[0] === '<') {
+ if (!result.asm.includes('\n') && result.asm[0] === '<') {
return [{text: result.asm, source: null}];
}
@@ -142,8 +144,8 @@ class JavaCompiler extends BaseCompiler {
parseds.forEach((parsed, classNumber) => {
if (classNumber > 0) {
// Separate classes with two line breaks
- segments.push({text: "", source: null});
- segments.push({text: "", source: null});
+ segments.push({text: '', source: null});
+ segments.push({text: '', source: null});
}
for (let i = 0; i < parsed.textsBeforeMethod.length; i++) {
// Line-based highlighting doesn't work if some segments span multiple lines,
@@ -151,12 +153,12 @@ class JavaCompiler extends BaseCompiler {
// -> split the lines and create segment for each separately
for (const line of utils.splitLines(parsed.textsBeforeMethod[i])) {
// javap output always starts with "Compiled from" on first line, discard these lines.
- if (line.startsWith("Compiled from")) {
+ if (line.startsWith('Compiled from')) {
continue;
}
segments.push({
text: line,
- source: null
+ source: null,
});
}
@@ -186,7 +188,7 @@ class JavaCompiler extends BaseCompiler {
for (const codeAndLineNumberTable of codeAndLineNumberTables) {
const method = {
- instructions: []
+ instructions: [],
};
methods.push(method);
@@ -201,7 +203,7 @@ class JavaCompiler extends BaseCompiler {
instrOffset: instrOffset,
// Should an instruction ever not be followed by a line number table,
// it might contain a trailing \r on Windows -> trim it, otherwise this would not be necessary
- text: codeLineCandidate.trimRight()
+ text: codeLineCandidate.trimEnd(),
});
} else {
break;
@@ -221,7 +223,7 @@ class JavaCompiler extends BaseCompiler {
// therefore, cache value here on match
lastIndex = lineRegex.lastIndex;
const [, sourceLineS, instructionS] = m;
- logger.verbose("Found source mapping: ", sourceLineS, "to instruction", instructionS);
+ logger.verbose('Found source mapping: ', sourceLineS, 'to instruction', instructionS);
const instrOffset = Number.parseInt(instructionS);
// Some instructions don't receive an explicit line number.
@@ -234,7 +236,7 @@ class JavaCompiler extends BaseCompiler {
// instructions without explicit line number get assigned the last explicit/same line number
method.instructions[currentInstr].sourceLine = currentSourceLine;
} else {
- logger.error("Skipping over instruction even though currentSourceLine == -1");
+ logger.error('Skipping over instruction even though currentSourceLine == -1');
}
currentInstr++;
}
@@ -243,7 +245,7 @@ class JavaCompiler extends BaseCompiler {
currentSourceLine = sourceLine;
method.instructions[currentInstr].sourceLine = currentSourceLine;
- if (typeof method.startLine === "undefined") {
+ if (typeof method.startLine === 'undefined') {
method.startLine = sourceLine;
}
// method.instructions.push({sourceLine: instrOffset});
@@ -252,7 +254,7 @@ class JavaCompiler extends BaseCompiler {
if (lastIndex !== -1) {
// Get "interesting" text after the LineNumbers table (header of next method/tail of file)
// trimRight() because of trailing \r on Windows
- textsBeforeMethod.push(codeAndLineNumberTable.substr(lastIndex).trimRight());
+ textsBeforeMethod.push(codeAndLineNumberTable.substr(lastIndex).trimEnd());
}
if (currentSourceLine !== -1) {
@@ -267,7 +269,7 @@ class JavaCompiler extends BaseCompiler {
// Used for sorting
firstSourceLine: methods.reduce((p, m) => p === -1 ? m.startLine : Math.min(p, m.startLine), -1),
methods: methods,
- textsBeforeMethod
+ textsBeforeMethod,
};
}
}