如何恢复索引功能?(Xcode)

如何恢复索引功能?(Xcode),xcode,swift,sourcekit,Xcode,Swift,Sourcekit,我的一个项目(在纯Swift中包含200多个文件)最近刚刚开始干扰索引过程。索引过程中途冻结,然后突然停止,导致SourceKitService崩溃 我根本找不到错误的代码;因为似乎没有 我的代码编译得很好(没有任何警告!),但它却无法被索引。起初,我认为这是一个Xcode 7.2版本,因此升级到了最新的beta版(7.3);然而,这个问题仍然存在。我无法恢复到我的旧代码,因为太多的工作将被撤消,我无法找出一个特定的文件的责任。坠机报告是 为了澄清这一点,Xcode本身并没有崩溃,只有索引过程(

我的一个项目(在纯Swift中包含200多个文件)最近刚刚开始干扰索引过程。索引过程中途冻结,然后突然停止,导致
SourceKitService
崩溃

我根本找不到错误的代码;因为似乎没有

我的代码编译得很好(没有任何警告!),但它却无法被索引。起初,我认为这是一个Xcode 7.2版本,因此升级到了最新的beta版(7.3);然而,这个问题仍然存在。我无法恢复到我的旧代码,因为太多的工作将被撤消,我无法找出一个特定的文件的责任。坠机报告是

为了澄清这一点,Xcode本身并没有崩溃,只有索引过程(因此,
SourceKitService
)才会崩溃

关于如何解决这个问题有什么想法吗?

如果我阅读正确, 问题来自于流程的这一部分:

Thread 8 Crashed:
0   com.apple.SourceKitService      0x000000010450d9fc swift::TypeBase::getDesugaredType() + 12
1   com.apple.SourceKitService      0x00000001043bccbe (anonymous namespace)::DeclChecker::checkDynamicSelfReturn(swift::FuncDecl*, swift::TypeRepr*, unsigned int) + 478
2   com.apple.SourceKitService      0x00000001043b7c08 (anonymous namespace)::DeclChecker::visitFuncDecl(swift::FuncDecl*) + 1432
3   com.apple.SourceKitService      0x00000001043acc0d (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 2733
4   com.apple.SourceKitService      0x00000001043a7ea7 swift::TypeChecker::validateDecl(swift::ValueDecl*, bool) + 727
5   com.apple.SourceKitService      0x00000001043b6426 (anonymous namespace)::DeclChecker::visitSubscriptDecl(swift::SubscriptDecl*) + 1478
6   com.apple.SourceKitService      0x00000001043acbdd (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 2685
7   com.apple.SourceKitService      0x00000001043a7ea7 swift::TypeChecker::validateDecl(swift::ValueDecl*, bool) + 727
8   com.apple.SourceKitService      0x00000001044fc003 swift::DeclContext::lookupQualified(swift::Type, swift::DeclName, unsigned int, swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&) const + 3075
9   com.apple.SourceKitService      0x00000001043c7a7c swift::TypeChecker::lookupMember(swift::DeclContext*, swift::Type, swift::DeclName, swift::OptionSet<swift::NameLookupFlags, unsigned int>) + 556
10  com.apple.SourceKitService      0x00000001043d51b7 (anonymous namespace)::ConformanceChecker::lookupValueWitnesses(swift::ValueDecl*, bool*) + 359
11  com.apple.SourceKitService      0x00000001043d11a1 (anonymous namespace)::ConformanceChecker::resolveWitnessViaLookup(swift::ValueDecl*) + 401
12  com.apple.SourceKitService      0x00000001043ce86f swift::TypeChecker::checkConformance(swift::NormalProtocolConformance*) + 2255
13  com.apple.SourceKitService      0x000000010438011b typeCheckFunctionsAndExternalDecls(swift::TypeChecker&) + 1099
14  com.apple.SourceKitService      0x00000001043809e5 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int) + 1781
15  com.apple.SourceKitService      0x0000000103fa40c2 swift::CompilerInstance::performSema() + 4738
16  com.apple.SourceKitService      0x0000000103e9a836 SourceKit::SwiftLangSupport::indexSource(llvm::StringRef, SourceKit::IndexingConsumer&, llvm::ArrayRef<char const*>, llvm::StringRef) + 4262
17  com.apple.SourceKitService      0x0000000103eb086a void SourceKit::WorkQueue::DispatchData::callAndDelete<handleRequestImpl(void*, std::__1::function<void (void*)>)::$_2>(void*) + 2170
18  libdispatch.dylib               0x00007fff9b7de33f _dispatch_client_callout + 8
19  libdispatch.dylib               0x00007fff9b7ec03a _dispatch_block_invoke + 474
20  com.apple.SourceKitService      0x00000001056afbbf executeBlock(void*) + 15
21  com.apple.SourceKitService      0x0000000103f3e58d ExecuteOnThread_Dispatch(void*) + 13
22  libsystem_pthread.dylib         0x00007fff8be14c13 _pthread_body + 131
23  libsystem_pthread.dylib         0x00007fff8be14b90 _pthread_start + 168
24  libsystem_pthread.dylib         0x00007fff8be12375 thread_start + 13
线程8崩溃:
0 com.apple.SourceKitService 0x000000010450d9fc swift::TypeBase::GetDesugardType()+12
1 com.apple.SourceKitService 0x00000001043bccbe(匿名命名空间)::DeclChecker::checkDynamicSelfReturn(swift::FuncDecl*,swift::typerrepr*,unsigned int)+478
2 com.apple.SourceKitService 0x00000001043b7c08(匿名命名空间)::DeclChecker::visitfundecl(swift::fundecl*)+1432
3 com.apple.SourceKitService 0x00000001043acc0d(匿名名称空间)::DeclChecker::visit(swift::Decl*)+2733
4 com.apple.SourceKitService 0x00000001043a7ea7 swift::TypeChecker::validateDecl(swift::ValueDecl*,bool)+727
5 com.apple.SourceKitService 0x00000001043b6426(匿名名称空间)::DeclChecker::visitSubscriptDecl(swift::SubscriptDecl*)+1478
6 com.apple.SourceKitService 0x00000001043acbdd(匿名名称空间)::DeclChecker::visit(swift::Decl*)+2685
7 com.apple.SourceKitService 0x00000001043a7ea7 swift::TypeChecker::validateDecl(swift::ValueDecl*,bool)+727
8 com.apple.SourceKitService 0x00000001044fc003 swift::DeclContext::lookupQualified(swift::Type,swift::DeclName,unsigned int,swift::lazyrolver*,llvm::SmallVectorImpl&)const+3075
9 com.apple.SourceKitService 0x00000001043c7a7c swift::TypeChecker::lookupMember(swift::DeclContext*,swift::Type,swift::DeclName,swift::OptionSet)+556
10 com.apple.SourceKitService 0x00000001043d51b7(匿名命名空间)::一致性检查器::查找值见证人(swift::ValueDecl*,bool*)+359
11 com.apple.SourceKitService 0x00000001043d11a1(匿名命名空间)::ConformanceChecker::resolveWitnessViaLookup(swift::ValueDecl*)+401
12 com.apple.SourceKitService 0x00000001043ce86f swift::TypeChecker::checkConformance(swift::NormalProtocolConformance*)+2255
13 com.apple.SourceKitService 0x000000010438011b类型检查功能和外部文件(swift::TypeChecker&)+1099
14 com.apple.SourceKitService 0x00000001043809e5 swift::执行类型检查(swift::SourceFile&,swift::TopLevelContext&,swift::OptionSet,unsigned int)+1781
15 com.apple.SourceKitService 0x0000000103fa40c2 swift::编译器状态::性能测试()+4738
16 com.apple.SourceKitService 0x0000000103e9a836 SourceKit::SwiftLangSupport::indexSource(llvm::StringRef,SourceKit::IndexingConsumer&,llvm::ArrayRef,llvm::StringRef)+4262
17 com.apple.SourceKitService 0x0000000103eb086a void SourceKit::WorkQueue::DispatchData::callAndDelete(void*)+2170
18 libdispatch.dylib 0x00007fff9b7de33f调度客户端调用+8
19 libdispatch.dylib 0x00007fff9b7ec03a _dispatch_block_invoke+474
20 com.apple.SourceKitService 0x00000001056afbbf executeBlock(void*)+15
21 com.apple.SourceKitService 0x0000000103f3e58d ExecuteOnThread_分派(void*)+13
22 libsystem_pthread.dylib 0x00007fff8be14c13_pthread_body+131
23 libsystem_pthread.dylib 0x00007fff8be14b90_pthread_start+168
24 libsystem_pthread.dylib 0x00007fff8be12375线程_开始+13
这导致我们:

20多天前

所以我想这是一个已知的问题。 但我不知道是什么原因造成的。我很确定这是一种尚未得到很好支持的swift代码风格

我还在这个碰撞测试项目中发现了您的碰撞:

如果您仔细研究,您可能会发现触发其中一次崩溃的确切案例:

  • ✓ 28197 swift TYPE BASE getdesugaredtype
  • ✓ 28200 swift typebase getdesugaredtype
  • ✓ 28203 swift typebase getdesugaredtype

从.xcodeproj中删除“xcuserdata”(右键单击.xcodeproj>选择“显示包内容”。这应该可以解决问题。

我想是这样做的,但以防万一:“清理项目+清理派生数据”可能会有帮助。@EricD:我已经试过了。总是有麻烦的:删除
~/Library/Caches/com.apple.dt.Xcode/
通常可以解决这种问题,但它也会重置一些pref和DBs,这样可能会产生麻烦的副作用,小心(先复制一个计时器之类的东西).@Eric:已经完成了,已经完成了。检查一下你的项目历史,找到导致这个问题的提交。不,找不到错误的代码。但我很高兴听到它在最新的测试版中得到了修复!这很有效!非常感谢!如果你不介意我问的话,你从哪里找到了这个解决方案?事实上我也有类似的问题。我想你应该会的所有的元信息都存储在“xcuserdata”中。我冒险将其删除,这很神奇:-)哦,我说得太快了。SourceKitService再次崩溃:(看起来这是一个无关的问题。索引工作正常,所以我接受这个答案。