public void analyze()

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);
        }
    }