扩展作业测试平台以包含代码分析(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.c
和test.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++)