in util/src/com/intellij/rt/coverage/instrumentation/JSR45Util.java [117:150]
private static List<FileInfo> parseFileNames(String debug, int fileSectionIdx, int lineInfoIdx, String className) {
final String defaultPrefix = getClassPackageName(className);
final String[] fileLines = getFileSectionLines(debug, fileSectionIdx, lineInfoIdx);
final List<FileInfo> result = new ArrayList<FileInfo>();
boolean generatedPrefix = true;
for (int i = 0; i < fileLines.length; i++) {
final String fileInfoLine = fileLines[i];
String idAndName = fileInfoLine;
String path = null;
if (fileInfoLine.startsWith("+ ")) {
idAndName = fileInfoLine.substring(2);
path = fileLines[++i];
}
int idx = idAndName.indexOf(" ");
int key = Integer.parseInt(idAndName.substring(0, idx));
final String fileName = idAndName.substring(idx + 1);
path = path == null ? fileName : processRelative(path);
final int lastDot = path.lastIndexOf(".");
final String pathWithDots = ClassNameUtil.convertToFQName(lastDot < 0
? path
: path.substring(0, lastDot) + "_" + path.substring(lastDot + 1));
generatedPrefix &= !pathWithDots.startsWith(defaultPrefix);
result.add(new FileInfo(fileName, pathWithDots, key));
}
if (generatedPrefix) {
for (int i = 0; i < result.size(); i++) {
final FileInfo fileInfo = result.get(i);
result.set(i, new FileInfo(fileInfo.myName, defaultPrefix + fileInfo.myPath, fileInfo.myIndex));
}
}
return result;
}