一个路径下有多个文件夹可能是多层文件夹,其中有文件夹属于git代码库,用python3遍历这个路径下git代码库的文件夹,查找里面c或者c++代码文件中带有PRQA的代码行,生成excl表格, 表格内容 代码仓库git路径,文件路径(基于git库文件夹的相对路径),行号,这行内容
时间: 2024-10-17 10:11:31 浏览: 38
android studio git 删除已在远程仓库的文件或文件夹方式
在Python中,你可以使用`os`, `glob`, `re`, 和 `subprocess` 这些模块来完成这个任务。这里是一个基本的步骤描述:
1. **导入所需的模块**:
```python
import os
import glob
import re
import subprocess
from openpyxl import Workbook
```
2. **获取git目录下的所有文件夹**:
```python
base_dir = '/path/to/your/directory'
git_folders = [d for d in os.listdir(base_dir) if '.git' in d]
```
3. **遍历git文件夹**:
对于每个git文件夹,找到它包含的`.cpp` 或 `.cc` 文件:
```python
for git_folder in git_folders:
repo_path = os.path.join(base_dir, git_folder)
code_files = glob.glob(os.path.join(repo_path, '**/*.cpp') + ' ' + os.path.join(repo_path, '**/*.cc'), recursive=True)
```
4. **检查文件内容并提取相关信息**:
```python
def find_prqa_lines(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
lines_with_prqa = [(line_number, line) for line_number, line in enumerate(content.splitlines(), start=1) if 'PRQA' in line]
return lines_with_prqa
results = []
for file in code_files:
results.extend(find_prqa_lines(file))
```
5. **创建Excel表格**:
```python
workbook = Workbook()
sheet = workbook.active
sheet['A1'] = 'Git路径'
sheet['B1'] = '文件路径'
sheet['C1'] = '行号'
sheet['D1'] = '代码内容'
row_num = 2
for item in results:
sheet.cell(row=row_num, column=1).value = repo_path
sheet.cell(row=row_num, column=2).value = os.path.relpath(file, repo_path)
sheet.cell(row=row_num, column=3).value = item[0]
sheet.cell(row=row_num, column=4).value = item[1]
row_num += 1
workbook.save('prqa_results.xlsx')
```
阅读全文