AppCode 2.0 EAP build #126.19

Hey guys,

it’s been a while since the last AppCode 2.0 EAP build, and you may be sure we haven’t spent this time uselessly. Actually, we’ve been busy preparing some new exciting features for you.

However before we’ll get into details, we would like to acknowledge the help of Bogdan Popescu, the developer of Dash browser. He was very responsive and improved Dash-AppCode integration so that with version 1.7.5 it provides more precise results, when called with AppCode’s Show External Documentation action (Shift+F1).
You can download fully functional version from App Store and enable integration in AppCode | Preferences | External Documentation.

OK, back to the new features in AppCode, here is what’s on the table:

  • Core Data object renderers in debugger.

  • Exception stack trackes in console are now linked to the actual code.

  • Integrated Clang Analyzer (Code | Inspect Codeā€¦).

  • Implement (Cmd+I) and Override (Cmd+O) now work with C++ classes, namespaces and top-level functions.
  • We are also working on auto-completion improvements: it will now show in-editor preview of the first variant that can be accepted by Enter or Tab, characters like dot, space and other won’t accept it. This behaviour can be changed in Preferences | Editor | Code completion.

Plus, quite a few other fixes and improvements.

Download and try the latest build from EAP page and tell us what you think! Issue reports and feature suggestions are very welcome in the tracker.

There’s more coming, so stay tuned!
The AppCode Team

This entry was posted in Announcement. Bookmark the permalink.

13 Responses to AppCode 2.0 EAP build #126.19

  1. iffi says:

    I’ve downloaded the EAP build, and a get tens of errors like this:

    Argument 1 for @NotNull parameter of com/jetbrains/objc/preprocessor/OCLanguageKindCalculator.tryFileTypeAndExtension must not be null: Argument 1 for @NotNull parameter of com/jetbrains/objc/preprocessor/OCLanguageKindCalculator.tryFileTypeAndExtension must not be null
    java.lang.IllegalArgumentException: Argument 1 for @NotNull parameter of com/jetbrains/objc/preprocessor/OCLanguageKindCalculator.tryFileTypeAndExtension must not be null
    at com.jetbrains.objc.preprocessor.OCLanguageKindCalculator.tryFileTypeAndExtension(OCLanguageKindCalculator.java)
    at com.jetbrains.cidr.xcode.model.XcodeMetaData.collectConfigurationLanguageKind(XcodeMetaData.java:419)
    at com.jetbrains.cidr.xcode.model.XcodeMetaData.access$400(XcodeMetaData.java:66)
    at com.jetbrains.cidr.xcode.model.XcodeMetaData$5.compute(XcodeMetaData.java:180)
    at com.jetbrains.cidr.xcode.model.XcodeMetaData$5.compute(XcodeMetaData.java:177)
    at com.jetbrains.cidr.xcode.model.XcodeMetaData$12.compute(XcodeMetaData.java:311)
    at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
    at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:200)
    at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
    at com.jetbrains.cidr.xcode.model.XcodeMetaData.getConfigurationLanguageKind(XcodeMetaData.java:905)
    at com.jetbrains.objc.preprocessor.OCLanguageKindCalculator.calculateLanguageKind(OCLanguageKindCalculator.java:131)
    at com.jetbrains.objc.psi.impl.OCFileImpl.calcFileKind(OCFileImpl.java:199)
    at com.jetbrains.objc.psi.impl.OCFileImpl.getKind(OCFileImpl.java:193)
    at com.jetbrains.objc.preprocessor.OCImportsGraph.getAllRootHeaders(OCImportsGraph.java:143)
    at com.jetbrains.objc.preprocessor.OCImportsGraph.buildSymbolAndRootHeaderCache(OCImportsGraph.java:110)
    at com.jetbrains.objc.symbols.FileSymbolTablesCache.ensurePendingFilesProcessed(FileSymbolTablesCache.java:536)
    at com.jetbrains.objc.symbols.FileSymbolTablesCache.ensurePendingFilesProcessed(FileSymbolTablesCache.java:525)
    at com.jetbrains.objc.psi.impl.symbols.OCFileGlobalSymbolsCache.processFile(OCFileGlobalSymbolsCache.java:127)
    at com.jetbrains.objc.psi.impl.symbols.OCLightFileGlobalSymbols.buildSymbols(OCLightFileGlobalSymbols.java:106)
    at com.jetbrains.objc.psi.impl.symbols.OCFileGlobalSymbolsCache$2.createValue(OCFileGlobalSymbolsCache.java:45)
    at com.jetbrains.objc.psi.impl.symbols.OCFileGlobalSymbolsCache$2.createValue(OCFileGlobalSymbolsCache.java:41)
    at com.intellij.util.containers.SLRUCache.get(SLRUCache.java:40)
    at com.jetbrains.objc.psi.impl.symbols.OCFileGlobalSymbolsCache.lightTableForFile(OCFileGlobalSymbolsCache.java:75)
    at com.jetbrains.objc.psi.impl.OCFileImpl.getMembersContainer(OCFileImpl.java:479)
    at com.jetbrains.objc.resolve.OCResolveUtil.processGlobalSymbols(OCResolveUtil.java:170)
    at com.jetbrains.objc.symbols.OCImplementationSymbol.getInterface(OCImplementationSymbol.java:80)
    at com.jetbrains.objc.symbols.OCImplementationSymbol.getInterface(OCImplementationSymbol.java:51)
    at com.jetbrains.objc.symbols.OCImplementationSymbol.getAssociatedSymbol(OCImplementationSymbol.java:90)
    at com.jetbrains.objc.lang.OCLineMarkerProvider.getRelatedSymbol(OCLineMarkerProvider.java:384)
    at com.jetbrains.objc.lang.OCLineMarkerProvider.getAction(OCLineMarkerProvider.java:356)
    at com.jetbrains.objc.lang.OCLineMarkerProvider.getDeclDefMarker(OCLineMarkerProvider.java:212)
    at com.jetbrains.objc.lang.OCLineMarkerProvider.getLineMarkerInfo(OCLineMarkerProvider.java:62)
    at com.intellij.codeInsight.daemon.impl.LineMarkersPass.addLineMarkers(LineMarkersPass.java:179)
    at com.intellij.codeInsight.daemon.impl.LineMarkersPass.collectInformationWithProgress(LineMarkersPass.java:118)
    at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:58)
    at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:62)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1$1.run(PassExecutorService.java:357)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1169)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1.run(PassExecutorService.java:348)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:226)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:345)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:321)
    at com.intellij.concurrency.JobLauncherImpl$3.call(JobLauncherImpl.java:145)
    at com.intellij.concurrency.JobLauncherImpl$3.call(JobLauncherImpl.java:142)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at com.intellij.concurrency.PrioritizedFutureTask.access$101(PrioritizedFutureTask.java:31)
    at com.intellij.concurrency.PrioritizedFutureTask$1.run(PrioritizedFutureTask.java:70)
    at com.intellij.concurrency.PrioritizedFutureTask.run(PrioritizedFutureTask.java:113)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)

    They are constantly popping up on the whole right side of the screen and the IDE is unusable :(

    • Anton Makeev says:

      Sorry for that, we’ll fix ASAP,
      meanwhile, open the project in Xcode, and check Build Phases | Compile Sources for each target – make sure there are no broken (red) files in them.
      If you fix these files, AppCode should work correctly.

      • iffi says:

        There was only one broken file, I removed it from the Compile Sources Phase. No the errors do not pop up, but they still occur in the event log, for 5 minutes, there are 79now and still counting.
        But the bigger problem is that go to Declaration is not working. When I cmd+click or comd+B, I get another error: update failed for AnAction with ID=GotoDeclaration: Argument 1 for @NotNull parameter of com/jetbrains/objc/preprocessor/OCLanguageKindCalculator.tryFileTypeAndExtension must not be null
        I tried invalidating the cache, but that didn’t help.

        • Anton Makeev says:

          It means that project still has some broken files in the Build Phases. Please file a bug report and we’ll continue discussion there. If possible, also attach your project.

          • iffi says:

            I’ve removed all broken files from the project (not only from build phases). Everything seems fine now. I’ll file a bug report, though I cannot attach my project.
            Thanks for the help :)

  2. maniacus says:

    This error also rendered IDE unusable for me unfortunately, is it possible to download the previous build again? At least until this bug is fixed…
    Thanks

    • maniacus says:

      Well, maybe it’s not a bug, maybe it just should be handled differently (Xcode tolerates this)

      • Anton Makeev says:

        Have you managed to workaround the problem by removing broken references?
        But anyway, you can download the previous build here: http://download.jetbrains.com/objc/AppCode-124.371.dmg

        • maniacus says:

          Hi Anton,

          Unfortunately there is some complicated (and probably not right) setup in our project that “requires” these red files to be shown, otherwise it won’t build (it’s a long story). It most likely can be fixed but the project is too big to do that now. I liked AppCode2 so much that I can’t go back to Xcode anymore :-), thank you for the link, I’ll be waiting for future builds.

  3. orip says:

    This latest build is also very unstable for me. I even found a bug that drove me crazy: I opened a file with Cmd-Shift-O, edited, everything works except that the file doesn’t change on disk.

    I double check everything, and my changes affect the built app, but my working directory has no changes. Restarting AppCode doesn’t fix this.

    After scratching my head I figure out that AppCode opened a derived version of the file instead of the one in my working directory:
    /Users/username/Library/Caches/appCode20/DerivedData/MyApp-1a2b3c4d/Build/Products/Debug-iphonesimulator/include/foo/bar.h

    Closing the file and opening again (with Cmd-Shift-O) opened the right one.

  4. Marcel Bradea says:

    How does the exception stack traces feature work? Do you need to do anything to enable it? Exceptions in the console still show up like this:

    2013-01-27 09:32:07.693 Foodo-Mobile[4154:9407] *** Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: ‘No matching items.’
    *** First throw call stack:
    (0×2177012 0x15b4e7e 0x9770f 0x5d054 0xb4986 0x5ed17 0x4cff53f 0x4d11014 0x4d022e8 0x4d02450 0x99fcde12 0x99fb5cca)
    libc++abi.dylib: terminate called throwing an exception
    Signal: 6 (signal SIGABRT)

    Are there certain build settings that have to be enabled perhaps?

    • Anton Makeev says:

      Marcel, to make use of stack trace navigation, you need to print -[NSException callStackSymbols] using NSLog or other technique.
      The feature you are looking for, though, is stack trace symbolication, that is not yet implemented.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>