private static final String REPOSITORY_FOLDER = createAbsolutePathName(System.getProperty("user.home"), "ifi-stolz-refaktor");
private static final String PROJECT_PATH = createAbsolutePathName(REPOSITORY_FOLDER, "eclipse_source_code/eclipse.jdt.ui/org.eclipse.jdt.ui");
private static final int DELAY_IN_SECONDS = Integer.parseInt(System.getProperty("refaktor.delay", "0"));
- protected static IProject project;
- protected AnalysisStatistics statistics;
+ private IProject project;
+ private AnalysisStatistics statistics;
private static Path createAbsolutePath(String directoryName, String fileName) {
return new Path(createAbsolutePathName(directoryName, fileName));
}
}
+ protected IProject getProject() {
+ return project;
+ }
+
+ protected AnalysisStatistics getStatistics() {
+ return statistics;
+ }
}
\ No newline at end of file
@Test
public void bench() throws Throwable {
- assertTrue(project.exists());
+ assertTrue(getProject().exists());
try {
CompilationUnitCacheManager.activateRecentlyUsedCaching();
}
private void analyzeProject() throws Throwable {
- ProjectWideSearchBasedExtractAndMoveMethodAnalyzer analyzer = new ProjectWideSearchBasedExtractAndMoveMethodAnalyzer(project, statistics);
+ ProjectWideSearchBasedExtractAndMoveMethodAnalyzer analyzer = new ProjectWideSearchBasedExtractAndMoveMethodAnalyzer(getProject(), getStatistics());
try {
analyzer.analyze();
} catch (Throwable t) {
RefaktorDebug.println(result);
RefaktorDebug.println("Number of results: " + results.size());
- RefaktorDebug.println("Time used on analysis: " + statistics.timeSinceStart());
- RefaktorDebug.println(statistics.getMethodCount() + " methods analyzed");
+ RefaktorDebug.println("Time used on analysis: " + getStatistics().timeSinceStart());
+ RefaktorDebug.println(getStatistics().getMethodCount() + " methods analyzed");
}
}
\ No newline at end of file
--- /dev/null
+package no.uio.ifi.refaktor.benchmark;
+
+import static org.junit.Assert.assertTrue;
+import no.uio.ifi.refaktor.changers.ProjectWideSearchBasedExtractAndMoveMethodChanger;
+import no.uio.ifi.refaktor.changers.RefaktorChanger;
+import no.uio.ifi.refaktor.utils.RefaktorDebug;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class SearchBasedExtractAndMoveMethodChangerBenchmark extends AbstractSearchBasedExtractAndMoveMethodBenchmark {
+
+ @Ignore
+ @Test
+ public void bench() throws Throwable {
+ assertTrue(getProject().exists());
+
+ makeChangeToWorkspace();
+
+ getStatistics().recordTimeUsed();
+ printStatistics();
+ }
+
+ private void makeChangeToWorkspace() throws CoreException {
+ RefaktorChanger changer = new ProjectWideSearchBasedExtractAndMoveMethodChanger(getProject(), getStatistics());
+ changer.checkPreconditions();
+ changer.executeChange(new NullProgressMonitor());
+ }
+
+ private void printStatistics() {
+ RefaktorDebug.println("Time used on analysis and change: " + getStatistics().getTimeUsed());
+ }
+}
\ No newline at end of file
org.eclipse.jdt.internal.corext.refactoring.structure
Export-Package: no.uio.ifi.refaktor,
no.uio.ifi.refaktor.analyze,
+ no.uio.ifi.refaktor.changers,
no.uio.ifi.refaktor.handlers,
no.uio.ifi.refaktor.utils
Bundle-ClassPath: bin/,
public class ProjectWideSearchBasedExtractAndMoveMethodAnalyzer extends PackageFragmentParentSearchBasedExtractAndMoveMethodAnalyzer {
-
private final IJavaProject javaProject;
public ProjectWideSearchBasedExtractAndMoveMethodAnalyzer(IProject project) {
package no.uio.ifi.refaktor.changers;
+import no.uio.ifi.refaktor.analyze.AnalysisStatistics;
import no.uio.ifi.refaktor.analyze.ProjectWideSearchBasedExtractAndMoveMethodAnalyzer;
import org.eclipse.core.resources.IProject;
private SearchBasedAnalyzerChanger changer;
public ProjectWideSearchBasedExtractAndMoveMethodChanger(IProject project) {
- changer = new SearchBasedAnalyzerChanger(new ProjectWideSearchBasedExtractAndMoveMethodAnalyzer(project));
+ this(project, new AnalysisStatistics());
+ }
+
+ public ProjectWideSearchBasedExtractAndMoveMethodChanger(IProject project, AnalysisStatistics statistics) {
+ changer = new SearchBasedAnalyzerChanger(new ProjectWideSearchBasedExtractAndMoveMethodAnalyzer(project, statistics));
}
public ProjectWideSearchBasedExtractAndMoveMethodChanger(IJavaProject javaProject) {
private void runPerformChangeOperation() throws CoreException {
performChangeOperation.run(monitor);
RefactoringStatus validationStatus = performChangeOperation.getValidationStatus();
- assertThat("The refactoring was not executed!", validationStatus, notNullValue());
+ assertThat("The refactoring was not executed: " + checkConditionsOperation.getRefactoring(), validationStatus, notNullValue());
RefaktorDebug.println("Change operation validation status: " + validationStatus.toString().replace("\n", ""));
}
}
\ No newline at end of file