mirror of
https://github.com/github/codeql.git
synced 2025-12-21 11:16:30 +01:00
Write Java class files in gzip format
This means our names match those expected by javac
This commit is contained in:
committed by
Ian Lynagh
parent
4a18705d73
commit
6de5a36cdc
@@ -184,18 +184,18 @@ public class OdasaOutput {
|
||||
return null;
|
||||
return FileUtil.appendAbsolutePath(
|
||||
currentSpecFileEntry.getTrapFolder(),
|
||||
JARS_DIR + "/" + PathTransformer.std().fileAsDatabaseString(jarFile) + ".trap");
|
||||
JARS_DIR + "/" + PathTransformer.std().fileAsDatabaseString(jarFile) + ".trap.gz");
|
||||
}
|
||||
|
||||
private File getTrapFileForModule(String moduleName) {
|
||||
return FileUtil.appendAbsolutePath(
|
||||
currentSpecFileEntry.getTrapFolder(),
|
||||
MODULES_DIR + "/" + moduleName + ".trap");
|
||||
MODULES_DIR + "/" + moduleName + ".trap.gz");
|
||||
}
|
||||
|
||||
private File trapFileFor(File file) {
|
||||
return FileUtil.appendAbsolutePath(currentSpecFileEntry.getTrapFolder(),
|
||||
PathTransformer.std().fileAsDatabaseString(file) + ".trap");
|
||||
PathTransformer.std().fileAsDatabaseString(file) + ".trap.gz");
|
||||
}
|
||||
|
||||
private File getTrapFileForClassFile(IrClass sym) {
|
||||
@@ -221,7 +221,7 @@ public class OdasaOutput {
|
||||
result = CLASSES_DIR + "/" +
|
||||
dots.matcher(classId).replaceAll("/") +
|
||||
".members" +
|
||||
".trap";
|
||||
".trap.gz";
|
||||
memberTrapPaths.put(classId, result);
|
||||
}
|
||||
return result;
|
||||
@@ -235,10 +235,10 @@ public class OdasaOutput {
|
||||
File trap = trapFileForClass(sym);
|
||||
if (trap.exists()) {
|
||||
trap.delete();
|
||||
File depFile = new File(trap.getParentFile(), trap.getName().replace(".trap", ".dep"));
|
||||
File depFile = new File(trap.getParentFile(), trap.getName().replace(".trap.gz", ".dep"));
|
||||
if (depFile.exists())
|
||||
depFile.delete();
|
||||
File metadataFile = new File(trap.getParentFile(), trap.getName().replace(".trap", ".metadata"));
|
||||
File metadataFile = new File(trap.getParentFile(), trap.getName().replace(".trap.gz", ".metadata"));
|
||||
if (metadataFile.exists())
|
||||
metadataFile.delete();
|
||||
}
|
||||
@@ -290,7 +290,7 @@ public class OdasaOutput {
|
||||
}
|
||||
|
||||
private TrapFileManager trapWriter(File trapFile, IrClass sym) {
|
||||
if (!trapFile.getName().endsWith(".trap"))
|
||||
if (!trapFile.getName().endsWith(".trap.gz"))
|
||||
throw new CatastrophicError("OdasaOutput only supports writing to compressed trap files");
|
||||
String relative = FileUtil.relativePath(trapFile, currentSpecFileEntry.getTrapFolder());
|
||||
trapFile.getParentFile().mkdirs();
|
||||
@@ -328,7 +328,7 @@ public class OdasaOutput {
|
||||
writeTrapDependencies(trapDependenciesForClass);
|
||||
// Record major/minor version information for extracted class files.
|
||||
// This is subsequently used to determine whether to re-extract (a newer version of) the same class.
|
||||
File metadataFile = new File(trapFile.getAbsolutePath().replace(".trap", ".metadata"));
|
||||
File metadataFile = new File(trapFile.getAbsolutePath().replace(".trap.gz", ".metadata"));
|
||||
try {
|
||||
Map<String, String> versionMap = new LinkedHashMap<>();
|
||||
TrapClassVersion tcv = TrapClassVersion.fromSymbol(sym);
|
||||
@@ -341,7 +341,7 @@ public class OdasaOutput {
|
||||
}
|
||||
}
|
||||
private void writeTrapDependencies(TrapDependencies trapDependencies) {
|
||||
String dep = trapDependencies.trapFile().replace(".trap", ".dep");
|
||||
String dep = trapDependencies.trapFile().replace(".trap.gz", ".dep");
|
||||
trapDependencies.save(
|
||||
currentSpecFileEntry.getTrapFolder().toPath().resolve(dep));
|
||||
}
|
||||
@@ -541,7 +541,7 @@ public class OdasaOutput {
|
||||
int majorVersion = 0;
|
||||
int minorVersion = 0;
|
||||
long lastModified = 0;
|
||||
File metadataFile = new File(trap.getAbsolutePath().replace(".trap", ".metadata"));
|
||||
File metadataFile = new File(trap.getAbsolutePath().replace(".trap.gz", ".metadata"));
|
||||
if (metadataFile.exists()) {
|
||||
Map<String,String> metadataMap = FileUtil.readPropertiesCSV(metadataFile);
|
||||
try {
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.io.StringWriter
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Paths
|
||||
import java.util.*
|
||||
import java.util.zip.GZIPOutputStream
|
||||
import com.intellij.openapi.vfs.StandardFileSystems
|
||||
import com.semmle.extractor.java.OdasaOutput
|
||||
import com.semmle.extractor.java.OdasaOutput.TrapFileManager
|
||||
@@ -193,7 +194,7 @@ class ExternalClassExtractor(val logger: FileLogger, val sourceFilePath: String,
|
||||
logger.info("Skipping extracting class ${irClass.name}")
|
||||
return
|
||||
}
|
||||
manager.getFile().bufferedWriter().use { trapFileBW ->
|
||||
GZIPOutputStream(manager.getFile().outputStream()).bufferedWriter().use { trapFileBW ->
|
||||
val tw = ClassFileTrapWriter(TrapLabelManager(), trapFileBW, getIrClassBinaryPath(irClass))
|
||||
val fileExtractor = KotlinFileExtractor(logger, tw, manager, this, pluginContext)
|
||||
fileExtractor.extractClassSource(irClass)
|
||||
|
||||
Reference in New Issue
Block a user