in CodeCoverage/JavaServer/java/src/org/apache/flex/tools/codecoverage/reporter/CodeCoverageReporter.java [403:480]
public void analyze(final File inFile, final CoverageData coverageData)
throws FileNotFoundException, IOException
{
try (BufferedReader reader = new BufferedReader(new FileReader(inFile)))
{
String inLine;
final ArrayList<String> stringPool = new ArrayList<String>();
int inLineNumber = 1;
while ((inLine = reader.readLine()) != null)
{
// test first char:
// @{path} the SWF's path
// #{id,string} defines an id string
char firstChar = inLine.charAt(0);
switch (firstChar)
{
case '@': // @swfURL
{
// read in SWF and analyze
String swfURL = inLine.substring(1);
SWFLineReporter swfLineReporter = new SWFLineReporter(swfURL);
swfLineReporter.readLines(coverageData);
break;
}
case '#': // instruction: packageFileID,packageFileString
{
// add id to pool
String[] results = inLine.substring(1).split(",");
assert results.length == 2 : "line " + inLineNumber
+ System.lineSeparator()
+ "improperly formatted line"
+ System.lineSeparator() + inLine;
assert !stringPool.contains(results[1]) : "line "
+ inLineNumber + System.lineSeparator()
+ "string is already in the string pool: "
+ results[1];
assert Integer.valueOf(results[0]) == stringPool.size() : "line "
+ inLineNumber
+ System.lineSeparator()
+ "string is already in the string pool: "
+ results[1];
stringPool.add(results[1]);
break;
}
default:
{
// "id,linenum"
// Split line and record linenum as a hit.
String[] results = inLine.split(",");
if (results.length == 2 && firstChar >= '0' && firstChar <= '9')
{
String file = stringPool.get(Integer.valueOf(results[0]));
int hitLineNumber = Integer.valueOf(results[1]);
coverageData.setLineExecuted(file, hitLineNumber);
break;
}
else
{
System.err.println("Warning: file " + inFile.getAbsolutePath() + ", line " + inLineNumber + ": unrecognized data, " + inLine);
}
}
}
inLineNumber++;
}
}
catch (NumberFormatException e)
{
System.err.println(inFile.getAbsolutePath() + " may not be a code coverage data file");
throw new IOException(e);
}
}