diff options
Diffstat (limited to 'lib/compilers/java.js')
-rw-r--r-- | lib/compilers/java.js | 54 |
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, }; } } |