我有一个c ++文件,它会更改并保持所有头文件保持不变。但每当我重新解析一个翻译单元时,libclang最终会消耗大量的cpu和ram。虽然它正在使用预编译的头文件(我可以看到生成的前导码文件),但它仍然需要相当多的资源和时间。
以下是我的代码片段。
translation_unit_ = clang_parseTranslationUnit(index_, 0, clang_argv[0],
clang_argv.size() - 1, 0, 0,
clang_defaultEditingTranslationUnitOptions());
// File name is in the arguments.
// Here I reparse again every time file changes.
clang_reparseTranslationUnit(translation_unit_, 0, 0,
clang_defaultReparseOptions(translation_unit_));
// This is how I get diagnositics
CXDiagnostic diag = clang_getDiagnostic(translation_unit_, i);
有人可以建议我在一个不断变化的源文件中重复找到编译错误吗?
答案 0 :(得分:1)
您在初始索引中使用clang_defaultEditingTranslationUnitOptions()
,之后再使用clang_defaultReparseOptions()
。尝试在两个地方使用clang_defaultEditingTranslationUnitOptions()
。
此外,不要期望重新分析源代码非常快 - 重新检查每个单独的更改将导致任何非平凡的源文件中的性能不佳。您可以在最后一次更改后等待几毫秒,看看是否可以将多个更改累积到一个重新分析中吗?