扩展作业测试平台以包含代码分析(C / C ++)

我正在维护/开发一个作业测试平台。 这主要是自动的。 我现在需要添加的是代码分析。 我需要检查特定结构的代码。

例如:

文件main.cpp是否包含一个名为user的类,其中包含一个const方法get_name()

是否有一些工具可以让我做这样的事情(理想是可以编写脚本的东西)。 仅限Linux。


一种可能是通过GCC运行代码并使用GCC-XML扩展来生成程序内部结构的XML描述。 然后,您可以使用您最喜欢的XML库来解析文档,或者如果您只需将其显示为HTML或其他格式,就可以将其应用于XSLT。


您可能可以将一些使用GCC-XML框架的东西拼凑起来,而不会有太多困难。


这如何适用于C ? :)

文件main.cpp是否包含一个名为user的类,其中包含一个const方法get_name()?

创建另一个文件(test.cpp)

void test(void) {
  const user x;
  x.get_name();
}

将test.cpp和main.cpp一起编译。 如果出现错误(退出代码!= 0),则返回NO!,则main.cpp文件不会使用特定方法定义名为user的(public)类。

警告:我不知道C++ ,因此请原谅上述任何主要(或次要)错误。


编辑脚本已添加

#! /bin/sh

cat main.c test.c > 3710532.c
if gcc 3710532.c > /dev/null 2>&1
then echo OK
else echo BZZZT
fi
rm 3710532.c

我没有在这台机器上安装的随时可用的C++编译器,所以我的测试是使用C编译器和C文件。 我的编译器没有“使用” gcc -combine main.c test.c所以我调整了该部分。

使用main.ctest.c输出结果运行此脚本'OK',否则输出'BZZZT'。


对于我使用这个main.c的测试

typedef int user;

int get_name(void) {
  return 0;
}

int main(void) {
  return 0;
}

和这个test.c

void test(void) {
  const user x;
  get_name();
}

样品运行

$ ./3710532.sh
OK
链接地址: http://www.djcxy.com/p/47845.html

上一篇: Extending homework testing platform to include code analysis (C/C++)

下一篇: deleting object, keeping parent?