Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CDT类验证C代码_C_Validation_Eclipse Cdt - Fatal编程技术网

使用CDT类验证C代码

使用CDT类验证C代码,c,validation,eclipse-cdt,C,Validation,Eclipse Cdt,我正在写一个简单的C编辑器。我必须验证代码以突出显示任何拼写错误、缺少分号、使用不存在的函数/变量/方法、if条件中的赋值等 解析和验证C是一个非常复杂的问题,所以我决定使用CDT。但是,我不知道怎么做。 我只找到了有关该方法的信息,但这并没有多大帮助,因为它只允许查找基本语法错误。(我说得对吗?) 我需要一个函数来获取C代码或类IASTTranslationUnit的对象。它必须返回所有问题(错误和警告)的列表。如何使用CDT API做到这一点?通过解析AST中找到的名称(调用IASTName

我正在写一个简单的C编辑器。我必须验证代码以突出显示任何拼写错误、缺少分号、使用不存在的函数/变量/方法、
if
条件中的赋值等

解析和验证C是一个非常复杂的问题,所以我决定使用CDT。但是,我不知道怎么做。 我只找到了有关该方法的信息,但这并没有多大帮助,因为它只允许查找基本语法错误。(我说得对吗?)


我需要一个函数来获取C代码或类
IASTTranslationUnit
的对象。它必须返回所有问题(错误和警告)的列表。如何使用CDT API做到这一点?

通过解析AST中找到的名称(调用
IASTName.resolveBinding()
),并查看生成的绑定是否为
IProblemBinding
,可以检查许多类别的错误

查看CDT如何在编辑器中显示许多错误

请注意,这不会捕获所有错误;您可以查看CDT,了解如何捕获其他类别的错误(一些检查程序也会产生警告)


然而,即使将所有CDT的检查器放在一起,也不能像编译器那样诊断所有的错误和警告。如果这是一项要求,我建议使用实际编译器的内部构件,例如。

我认为在出现解析错误的情况下,您不会得到AST,因此这种方法无法验证C代码,而是1)在启用所有警告的情况下运行编译器,当所有警告修复后,再运行工具,比如ValGRAND在源代码上。@ USER 3629 249我会认为这是最后一招。然而,我正在寻找便携式解决方案。代码可能正在其他机器上的服务器上运行。即使没有,我也不想强迫每个用户安装和配置编译器。@NO_NAME,没有编译器,任何用户都不会将任何C代码生成为可执行文件。所以,也许我不明白您想要实现什么。@user3629249 User将不会生成任何可执行文件。代码将被发送到服务器并存储在那里,直到目标机器将其下载。它们不是长程序,而是可编译的脚本。