@Override public <T> void visitCtClass(CtClass<T> e) { //all the comments located before the body brackets belongs to class if (comment.getPosition().getSourceEnd() < ((BodyHolderSourcePosition) e.getPosition()).getBodyStart()) { e.addComment(comment); return; } final List<CtElement> elements = new ArrayList<>(); for (CtTypeMember typeMember : e.getTypeMembers()) { if (typeMember instanceof CtField || typeMember instanceof CtMethod || typeMember instanceof CtConstructor) { elements.add(typeMember); } } addCommentToNear(comment, elements); try { comment.getParent(); } catch (ParentNotInitializedException ex) { e.addComment(comment); } }
public void parseFile(File name) { if(!parsedfile.contains(name.getAbsolutePath())) { parsedfile.add(name.getAbsolutePath()); for (CtClass<?> klass : this.factory.getModel().getElements(new TypeFilter<CtClass>(CtClass.class))) { if(klass.getPosition().getFile().getAbsolutePath().equals(name.getAbsolutePath())) { @SuppressWarnings("rawtypes") CtClass founded=klass; if (!classMap.containsKey(founded.getQualifiedName())) { classMap.put(founded.getQualifiedName(), founded); List<CtEnum> enumArray = founded.getElements(new TypeFilter<>(CtEnum.class)); for(int index=0; index<enumArray.size(); index++) { enumMap.put(enumArray.get(index).getQualifiedName(), enumArray.get(index)); } } break; } } } }
@Override public boolean isToBeProcessed(CtStatement candidate) { CtClass parent = candidate.getParent(CtClass.class); if (parent == null || !parent.getQualifiedName().equals(this.location.getContainingClassName())) { return false; } return parent.getPosition().getLine() == location.getLineNumber(); }
public void analyzeLib() { String sourcefile=this.faultyClass.getPosition().getFile().getAbsolutePath(); sourcefile = sourcefile.substring(0,sourcefile.lastIndexOf("/")); parseDirSingle(new File(sourcefile)); ImportScanner importContext = new ImportScannerImpl(); importContext.computeImports(this.faultyClass); Collection<CtImport> imports = importContext.getAllImports(); for (CtImport certainimport : imports) { String importedlibname=certainimport.getReference().toString(); if(importedlibname.indexOf(".")==-1) continue; if(certainimport.getImportKind()==CtImportKind.FIELD) { log.info("do not need to consider this case"); importedlibname=""; } else if(certainimport.getImportKind()==CtImportKind.TYPE) { importedlibname=importedlibname; } else if(certainimport.getImportKind()==CtImportKind.METHOD ||certainimport.getImportKind()==CtImportKind.ALL_TYPES) { importedlibname=importedlibname.substring(0,importedlibname.lastIndexOf(".")); } else if (certainimport.getImportKind()==CtImportKind.ALL_STATIC_MEMBERS) { log.info("temporily ignore this case"); importedlibname=""; } parseImportFile(importedlibname); } }
@Override public <T> void visitCtClass(CtClass<T> ctClass) { if (child instanceof CtConstructor) { CtConstructor<T> c = (CtConstructor<T>) child; ctClass.addConstructor(c); if (c.getPosition() != null && c.getPosition().equals(ctClass.getPosition())) { c.setImplicit(true); } } if (child instanceof CtAnonymousExecutable) { ctClass.addAnonymousExecutable((CtAnonymousExecutable) child); } super.visitCtClass(ctClass); }
@SuppressWarnings({ "rawtypes", "static-access" }) protected void addImportsForSketch() { CtClass classA = this.modificationPoint.getCtClass(); CompilationUnit unitA = this.mutSupporter.getFactory().CompilationUnit().getMap().get( classA.getPosition().getFile().getPath()); Collection<CtImport> imports = unitA.getImports(); CtImport sketchlib=this.mutSupporter.getFactory().Type().createImport(this.mutSupporter.getFactory().Type().createReference ("fr.inria.astor.approaches.scaffold.scaffoldsynthesis.ScaffoldSynthesisEntry")); imports.add(sketchlib); // unitA.setImports(imports); }
private AssertFixerResult fixGivenTest(Launcher launcher, String failingClass, String failingTestMethod) { CtClass testClass = launcher.getFactory().Class().get(failingClass); Failure failure = TestRunner.runTest(this.configuration, launcher, failingClass, failingTestMethod).getFailingTests().get(0); LOGGER.info("Fixing: {}", failure.messageOfFailure); try { return AssertFixer.fixAssert( configuration, launcher, testClass, failingTestMethod, failure, this.configuration.getClasspath() ); } catch (Exception e) { AssertFixerResult fixerResult = new AssertFixerResult(failingClass, failingTestMethod); fixerResult.setFilePath(testClass.getPosition().getFile().getPath()); fixerResult.setExceptionMessage(e.getMessage()); fixerResult.setSuccess(false); return fixerResult; } } }
.getPosition().getFile().getAbsolutePath());
public static AssertFixerResult fixAssert(Configuration configuration, Launcher spoon, CtClass originalClass, String testCaseName, Failure failure, String cp) throws MalformedURLException, ClassNotFoundException { final CtClass<?> classTestToBeFixed = originalClass.clone(); final String originalClassStr = originalClass.toString(); final String filePath = originalClass.getPosition().getFile().getPath(); final String basePath = new File(".").getPath(); String relativeFilePath = new File(basePath).toURI().relativize(new File(filePath).toURI()).getPath(); result.setFilePath(originalClass.getPosition().getFile().getPath()); AssertFixerResult.RepairType repairType = AssertFixerResult.RepairType.NoRepair; CtMethod<?> testCaseToBeFix = classTestToBeFixed.getMethodsByName(testCaseName).get(0);