自动编译执行并生成log、记录CSV文件工具脚本

本文介绍了一款Python脚本,用于自动编译C/C++源码,支持多种编译器,包括gcc、clang和公司自有编译器。编译成功后自动运行生成的可执行文件,并详细记录编译和运行的日志信息,同时将运行结果以特定格式写入CSV文件。该工具特别适用于需要批量处理源码并记录详细信息的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近实习,因工作需求,需要对大量源码分别用不同编译器进行编译执行并分别记录文件编译信息以及编译成功运行的信息,并根据要求记录每个文件的csv信息。小组提供的一个稍有简陋的shell脚本功能有限,个人也完全不懂shell。因此重编写了一个小工具,记录之,尽管可能重用率可能并不高。
工具工作内容:

  • 单一项目文件夹中不相干的每一个源码(c/c++)进行三种编译器编译(gcc/clang以及公司自己的编译器)
  • 对编译成功生成的a.out进行自动运行
  • 对每个文件每种编译器编译运行的详情进行日志记录
  • 将自动运行的情况对汇总的csv文件进行填充

csv填充格式要求如下:(便于对照代码进行修改)
这里写图片描述

主要注意对其column编号。其中BCDE是由文件夹目录等拆分出的填充信息,FJ两列信息是在每个文件中定义的://kind:normal 、//expect result:1这样。result分为1,2,3三种状态,KLM列也是按运行情况填充1、2、3这三种内容,GHI按运行情况填充字符’○’、’ב这两种内容。
具体文件及使用方法见repo链接autoCompileTest
代码:

#! /usr/bin/env python
# coding=utf-8 
#Author:BaoJunxian
#Date:2018/5/28

import os,openpyxl,subprocess
from openpyxl import styles

TEST_FILE_SUFFIX = ('.c','.c++','.cxx','.cpp','.C','.cc')
C_FILE_SUFFIX = ('.c')
CPP_FILE_SUFFIX = ('.c++','.cxx','.cpp','.C','.cc')

C_COMPILE = ['gcc','clang','fcc -Xg']
CC_COMPILE = ['g++','clang++','FCC -Xg']
#some configurations
CSV_URL = '/home/baojx/test_case/19_Arrays_of_Variable_Length/GNU拡張仕様テスト仕様書_JP.xlsx'
CSV_TMP = ''.join([CSV_URL,'.bak'])
MODI_SHEET = 'Content'
#some modi constant val def
TEST_CORDANCE = '○'
TEST_DISCORDANCE = '×'
ALL_PASS = 1
HALF_PASS = 2
ALL_ERROR = 3

#parse content for csv basic info modification,return tuple(caseType,expectResult)
def contentParse(fileName):
    with open(fileName) as target:
        while True:
            content = next(target,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值