/** * Creates a new runtime. */ public RuntimeData() { store = new ExecutionDataStore(); sessionId = "<none>"; startTimeStamp = System.currentTimeMillis(); }
public void accept(IExecutionDataVisitor executionDataVisitor, ISessionInfoVisitor sessionInfoVisitor) throws CoreException { sessionInfoStore.accept(sessionInfoVisitor); executionDataStore.accept(executionDataVisitor); }
public Collection<ExecutionData> getExecutionData() { return executiondatastore.getContents(); }
/** * Subtracts all probes in the given execution data store from this store. * * @param store * execution data store to subtract * @see #subtract(ExecutionData) */ public void subtract(final ExecutionDataStore store) { for (final ExecutionData data : store.getContents()) { subtract(data); } }
private void mergeReports(File reportOverall, File... reports) { SessionInfoStore infoStore = new SessionInfoStore(); ExecutionDataStore dataStore = new ExecutionDataStore(); loadSourceFiles(infoStore, dataStore, reports); BufferedOutputStream outputStream = null; try { outputStream = new BufferedOutputStream(new FileOutputStream(reportOverall)); ExecutionDataWriter dataWriter = new ExecutionDataWriter(outputStream); infoStore.accept(dataWriter); dataStore.accept(dataWriter); } catch (IOException e) { throw new IllegalStateException(String.format("Unable to write overall coverage report %s", reportOverall.getAbsolutePath(), e)); } finally { Closeables.closeQuietly(outputStream); } }
public void visitClassExecution(final ExecutionData data) { put(data); } }
private void mergeReports(File reportOverall, File... reports) { SessionInfoStore infoStore = new SessionInfoStore(); ExecutionDataStore dataStore = new ExecutionDataStore(); loadSourceFiles(infoStore, dataStore, reports); BufferedOutputStream outputStream = null; try { outputStream = new BufferedOutputStream(new FileOutputStream(reportOverall)); ExecutionDataWriter dataWriter = new ExecutionDataWriter(outputStream); infoStore.accept(dataWriter); dataStore.accept(dataWriter); } catch (IOException e) { throw new SonarException(String.format("Unable to write overall coverage report %s", reportOverall.getAbsolutePath()), e); } finally { Closeables.closeQuietly(outputStream); } }
@Override public void visitSessionInfo(SessionInfo info) { String sessionId = info.getId(); executionDataStore = sessions.computeIfAbsent(sessionId, id -> new ExecutionDataStore()); }
private void mergeReports(File reportOverall, File... reports) { SessionInfoStore infoStore = new SessionInfoStore(); ExecutionDataStore dataStore = new ExecutionDataStore(); loadSourceFiles(infoStore, dataStore, reports); BufferedOutputStream outputStream = null; try { outputStream = new BufferedOutputStream(new FileOutputStream(reportOverall)); ExecutionDataWriter dataWriter = new ExecutionDataWriter(outputStream); infoStore.accept(dataWriter); dataStore.accept(dataWriter); } catch (IOException e) { throw new SonarException(String.format("Unable to write overall coverage report %s", reportOverall.getAbsolutePath()), e); } finally { Closeables.closeQuietly(outputStream); } }
private Collection<File> classFilesOfStore(ExecutionDataStore executionDataStore) { Collection<File> result = Lists.newArrayList(); for (ExecutionData data : executionDataStore.getContents()) { String vmClassName = data.getName(); File classFile = classFilesCache.get(vmClassName); if (classFile != null) { result.add(classFile); } } return result; }
/** * Saves the current content into the given output stream. * * @param stream * stream to save content to * @throws IOException * in case of problems while writing to the stream */ public void save(final OutputStream stream) throws IOException { final ExecutionDataWriter dataWriter = new ExecutionDataWriter(stream); sessionInfos.accept(dataWriter); executionData.accept(dataWriter); }
/** * New instance to combine session infos and execution data from multiple * files. */ public ExecFileLoader() { sessionInfos = new SessionInfoStore(); executionData = new ExecutionDataStore(); }
/** * Merge all reports in reportOverall. * @param reportOverall destination file of merge. * @param reports files to be merged. */ public static void mergeReports(File reportOverall, File... reports) { SessionInfoStore infoStore = new SessionInfoStore(); ExecutionDataStore dataStore = new ExecutionDataStore(); boolean isCurrentVersionFormat = loadSourceFiles(infoStore, dataStore, reports); try (BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(reportOverall))) { Object visitor; if (isCurrentVersionFormat) { visitor = new ExecutionDataWriter(outputStream); } else { visitor = new org.jacoco.previous.core.data.ExecutionDataWriter(outputStream); } infoStore.accept((ISessionInfoVisitor) visitor); dataStore.accept((IExecutionDataVisitor) visitor); } catch (IOException e) { throw new IllegalStateException(String.format("Unable to write overall coverage report %s", reportOverall.getAbsolutePath()), e); } }
/** * Writes the content of the store to the given visitor interface. * * @param visitor * interface to write content to */ public void accept(final IExecutionDataVisitor visitor) { for (final ExecutionData data : getContents()) { visitor.visitClassExecution(data); } }
/** * Merge all reports in reportOverall. * @param reportOverall destination file of merge. * @param reports files to be merged. */ public static void mergeReports(File reportOverall, File... reports) { ExecutionDataVisitor edv = new ExecutionDataVisitor(); loadSourceFiles(edv, reports); try (BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(reportOverall))) { Object visitor = new ExecutionDataWriter(outputStream); for (Map.Entry<String, ExecutionDataStore> entry : edv.getSessions().entrySet()) { SessionInfo sessionInfo = new SessionInfo(entry.getKey(), 0, 0); ((ISessionInfoVisitor) visitor).visitSessionInfo(sessionInfo); entry.getValue().accept((IExecutionDataVisitor) visitor); } } catch (IOException e) { throw new AnalysisException(String.format("Unable to write overall coverage report %s", reportOverall.getAbsolutePath()), e); } }
@Override public void visitSessionInfo(SessionInfo info) { String sessionId = info.getId(); executionDataStore = sessions.get(sessionId); if (executionDataStore == null) { executionDataStore = new ExecutionDataStore(); sessions.put(sessionId, executionDataStore); } }
private void copyToAgentExecutionStore(ExecutionDataStore dataStore) throws Exception { Field f = null; try { f = UUID.class.getDeclaredField("$jacocoAccess"); } catch (Exception e) { f = UnknownError.class.getDeclaredField("$jacocoAccess"); } Object executor = f.get(null); Method m = executor.getClass().getDeclaredMethod("getProbes", Object[].class); m.setAccessible(true); for (ExecutionData data : dataStore.getContents()) { Object[] probeData = new Object[] {data.getId(), data.getName(), data.getProbes().length}; m.invoke(executor, new Object[] {probeData}); boolean[] resultData = (boolean[]) probeData[0]; for (int i = 0; i < data.getProbes().length; i++) { if (!resultData[i]) { resultData[i] = data.getProbes()[i]; } } } }