AppCode 2.0 EAP build #126.19

Anton Makeev

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

Comments below can no longer be edited.

13 Responses to AppCode 2.0 EAP build #126.19

  1. iffi says:

    January 23, 2013

    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:

      January 23, 2013

      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:

        January 23, 2013

        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:

          January 23, 2013

          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:

            January 23, 2013

            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:

    January 23, 2013

    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:

      January 23, 2013

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

      • Anton Makeev says:

        January 23, 2013

        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:

          January 23, 2013

          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:

    January 24, 2013

    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:

    January 27, 2013

    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:
    (0x2177012 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:

      January 27, 2013

      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.

Subscribe

Subscribe to product updates