Libclang 检查语法

问题描述 投票:0回答:2

是否有某种方法可以从 libclang 获取源文件中的 C++ 代码是否具有正确语法的信息?即使使用无效的 C++ 代码,Libclang 也会尝试创建翻译单元。

c++ llvm clang
2个回答
2
投票

一般问题的一般答案是肯定的。看看这个使用 libclang 来实现此目的的 Sublime Text 插件:https://github.com/quarnster/SublimeClang

它使用 libclang Python 绑定来处理编辑器中的当前文件并标记错误和警告,并提供其他有用的功能,例如自动完成和“转到定义”。


0
投票

如果您询问如何在使用 Python libclang 绑定时检测语法错误,例如在调用

clang.cindex.Index.parse
之后,答案是检查返回的 diagnostics
TranslationUnit
 字段。

例如:

import sys
import clang.cindex

index = clang.cindex.Index.create()
translation_unit = index.parse("test.c")

if translation_unit.diagnostics:
    # Print the errors and bail.
    for d in translation_unit.diagnostics:
        print(d, file=sys.stderr)
    sys.exit(2)
else:
    print("No syntax errors.")
© www.soinside.com 2019 - 2024. All rights reserved.