Open guerraem opened 12 years ago
Creio estar resolvido. Faltava o parser tratar Modifiers em VariableDeclarationStatement. As declarações de variáveis com "final" geravam esse erro de sintaxe.
É difícil de testar aqui o código exatamente como está, pois não tenho todas essas classes que o código depende, isso gera vários erros no parsing. O problema dos modifiers está resolvido.
Vou baixar e testar aqui, se não der nada errado marco como resolvido.
Esse erro veio de um dos alunos que tentou usar o Neutrino no laboratóro:
java.lang.RuntimeException: Parsing failed at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.getParsedCode(EclipseTestSmellDetector.java:91) at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.run(EclipseTestSmellDetector.java:61) at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.run(EclipseTestSmellDetector.java:51) at org.ita.neutrino.testsmells.ActionController.runDetection(ActionController.java:51) at org.ita.neutrino.testsmells.ActionController.run(ActionController.java:42) at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251) at org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:229) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501) at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) Caused by: org.ita.neutrino.astparser.BlockParser$UnsupportedSintaxException: Sintax não suportada. at org.ita.neutrino.astparser.BlockParser.parseVariableDeclaration(BlockParser.java:123) at org.ita.neutrino.astparser.BlockParser.parseStatement(BlockParser.java:61) at org.ita.neutrino.astparser.BlockParser.parse(BlockParser.java:48) at org.ita.neutrino.astparser.ASTParser.parseAllCodeBlocksInWorkspace(ASTParser.java:198) at org.ita.neutrino.astparser.ASTParser.parse(ASTParser.java:76) at org.ita.neutrino.testsmells.core.EclipseTestSmellDetector.getParsedCode(EclipseTestSmellDetector.java:89) ... 34 more
O código que ele usou é o seguinte:
@RunWith(JMock.class) public class TestDAO { Mockery ctx = new JUnit4Mockery(); @Test public void deveAdicionarObjetoAoCache(){ final BasicDao dao = ctx.mock(BasicDao.class); ProxyDao proxy = new ProxyDao(dao); final Identifiable obj = ctx.mock(Identifiable.class); ctx.checking(new Expectations(){{ oneOf(dao).insert(obj); allowing(obj).getID(); will(returnValue(0)); }}); proxy.insert(obj); assertTrue(proxy.isCached(obj)); }
}