Skip to content

Latest commit

 

History

History
278 lines (205 loc) · 8.5 KB

File metadata and controls

278 lines (205 loc) · 8.5 KB

Pylint 需要重构的问题报告

生成日期: 2026-02-23 当前评分: 8.02/10 已修复问题: 未使用导入、未使用变量、f-string 转换、换行符等简单问题


需要重构的问题分类

1. 代码复杂度问题 (R09xx)

1.1 函数参数过多 (R0913/R0917)

共有 90+ 个函数参数过多的警告。主要涉及以下文件:

文件 函数/行 参数数量
qulab/visualization/plot_layout.py 511 18个参数
qulab/visualization/_autoplot.py 347 18个参数
qulab/visualization/_autoplot.py 222 15个参数
qulab/visualization/_autoplot.py 317 14个参数
qulab/visualization/_autoplot.py 179 14个参数
qulab/visualization/plot_circ.py 226 12个参数
qulab/visualization/plot_seq.py 209 11个参数
qulab/visualization/plot_seq.py 166 9个参数
qulab/visualization/plot_layout.py 192 9个参数
qulab/visualization/plot_circ.py 78 10个参数
qulab/visualization/plot_circ.py 35 10个参数

建议修复方案:

  • 使用配置类/数据类封装相关参数
  • 使用 **kwargs 或字典传递可选参数
  • 将大函数拆分为多个小函数

1.2 局部变量过多 (R0914)

共有 28 个函数局部变量过多的警告。

主要问题文件:

  • qulab/visualization/__init__.py:26 - 50个局部变量
  • qulab/visualization/_autoplot.py:222 - 27个局部变量
  • qulab/visualization/plot_circ.py:78 - 22个局部变量
  • qulab/visualization/plot_layout.py:255 - 21个局部变量
  • qulab/visualization/plot_seq.py:166 - 20个局部变量
  • qulab/visualization/_autoplot.py:347 - 19个局部变量
  • qulab/visualization/plot_layout.py:384 - 19个局部变量
  • qulab/visualization/plot_layout.py:232 - 18个局部变量

建议修复方案:

  • 提取内部逻辑为独立函数
  • 使用局部数据结构封装相关变量
  • 将复杂函数拆分为多个步骤函数

1.3 分支过多 (R0912)

共有 33 个函数分支过多的警告。

主要问题文件:

  • qulab/visualization/qdat.py:16 - 25个分支
  • qulab/visualization/plot_layout.py:511 - 22个分支
  • qulab/visualization/plot_circ.py:226 - 12个分支
  • qulab/visualization/plot_layout.py:384 - 13个分支
  • qulab/visualization/_autoplot.py:222 - 14个分支
  • qulab/visualization/_autoplot.py:347 - 15个分支

建议修复方案:

  • 使用策略模式替换复杂条件判断
  • 提取条件为辅助函数
  • 使用查找表/字典替代多分支

1.4 语句过多 (R0915)

共有 11 个函数语句过多的警告。

主要问题文件:

  • qulab/visualization/qdat.py:16 - 100条语句
  • qulab/visualization/__init__.py:26 - 63条语句
  • qulab/visualization/_autoplot.py:222 - 62条语句
  • qulab/visualization/plot_layout.py:511 - 59条语句

建议修复方案:

  • 将大函数拆分为多个职责单一的小函数
  • 提取重复代码为辅助函数

1.5 实例属性过多 (R0902)

共有 20 个类实例属性过多的警告。

主要问题文件:

  • qulab/monitor/toolbar.py:146 - 21个属性
  • qulab/monitor/mainwindow.py:23 - 14个属性
  • qulab/monitor/ploter.py:26 - 11个属性
  • qulab/monitor/monitor.py:180 - 10个属性

建议修复方案:

  • 将相关属性分组为数据类
  • 使用组合替代扁平结构

1.6 公共方法过少 (R0903/R0904)

共有 35 个类公共方法过少或过多的警告。

主要问题文件:

  • qulab/tools/connection_helper.py:1 - 只有1个公共方法
  • qulab/monitor/monitor.py:180 - 只有1个公共方法

建议修复方案:

  • 考虑使用函数替代单方法类
  • 或将相关功能合并到此类中

2. 代码结构问题

2.1 重复代码 (R0801)

共有 26 处重复代码警告。

主要重复代码位置:

  1. qulab.storage.base vs qulab.storage.models.base - 类定义重复
  2. qulab.storage.local vs qulab.storage.remote - 查询逻辑重复
  3. qulab.scan.record vs qulab.storage.array - 数组操作逻辑重复
  4. qulab.storage.models.document vs qulab.storage.models.tag - 查询函数重复
  5. qulab.sys.rpc.msgpack - 内部重复代码块

建议修复方案:

  • 提取公共逻辑到基类或工具函数
  • 使用混入(Mixin)模式共享代码
  • 对于 msgpack,提取辅助函数封装重复逻辑

2.2 循环导入 (R0401)

共有 1 处循环导入。

  • qulab.scan.scan -> qulab.scan.server -> (循环)

建议修复方案:

  • 提取公共接口到新模块
  • 使用延迟导入(lazy import)
  • 重新设计模块依赖关系

3. 代码质量问题

3.1 模块/函数缺少文档字符串 (C0114/C0115/C0116)

共有 ~700 个缺少文档字符串的警告。

主要问题:

  • 502个函数缺少文档字符串
  • 91个类缺少文档字符串
  • 63个模块缺少文档字符串

建议修复方案:

  • 为核心API添加文档字符串
  • 使用 Google/NumPy 文档字符串格式
  • 优先处理公共接口

3.2 非顶层导入 (C0415)

共有 154 个非顶层导入的警告。

主要问题文件:

  • qulab/visualization/plot_layout.py:70 - pandas
  • qulab/visualization/__init__.py:33 - waveforms.math.fit
  • qulab/visualization/__main__.py - 多处延迟导入
  • qulab/monitor/monitor.py:37-38 - PyQt5 相关导入

建议修复方案:

  • 对于重量级依赖(pandas, PyQt5),保留延迟导入并添加注释说明
  • 对于轻量级依赖,移动到顶层导入
  • 考虑使用依赖注入模式

3.3 行过长 (C0301)

共有 28 行行过长的警告。

建议修复方案:

  • 使用括号换行
  • 提取长表达式为变量

4. 命名和约定问题

4.1 命名不规范 (C0103)

共有 160 个命名不规范的警告。

建议修复方案:

  • 遵循 PEP 8 命名规范
  • 常量使用 UPPER_CASE
  • 类使用 CamelCase
  • 函数/变量使用 snake_case

4.2 重定义内置函数 (W0622)

共有 79 个重定义内置函数的警告。

常见被重定义的内置函数:

  • type - 在多处被用作变量名
  • compile - 在 qulab/__init__.py:9 被重定义
  • id, max, min, sum

建议修复方案:

  • 使用更有意义的变量名
  • 添加下划线后缀避免冲突 (如 type_)

4.3 重定义外部名称 (W0621)

共有 54 个重定义外部名称的警告。

建议修复方案:

  • 避免在嵌套作用域中使用相同名称
  • 使用不同的变量名

5. 错误处理问题

5.1 捕获过于宽泛的异常 (W0718)

共有 25 个捕获过于宽泛异常的警告。

建议修复方案:

  • 捕获具体的异常类型
  • 避免裸 except: 语句 (W0702)

5.2 裸异常捕获 (W0702)

共有 75 个裸异常捕获的警告。

建议修复方案:

  • 使用 except Exception: 或更具体的异常类型
  • 添加注释说明为什么捕获所有异常

5.3 异常处理中的问题 (W0707)

共有 22 个异常链断裂的警告。

建议修复方案:

  • 使用 raise ... from e 保留异常链

6. 其他问题

6.1 可变默认参数 (W0102)

共有 14 个使用可变默认参数的警告。

建议修复方案:

  • 使用 None 作为默认值,在函数内部初始化

6.2 未指定编码打开文件 (W1514)

共有 12 个未指定编码的警告。

建议修复方案:

  • 显式指定 encoding='utf-8'

优先修复建议

高优先级 (影响代码质量)

  1. 修复循环导入 (R0401) - 可能影响运行时行为
  2. 修复可变默认参数 (W0102) - 可能导致难以发现的 Bug
  3. 修复裸异常捕获 (W0702) - 可能隐藏错误
  4. 修复异常链断裂 (W0707) - 影响调试

中优先级 (提高可维护性)

  1. 提取重复代码 (R0801) - 减少维护成本
  2. 拆分复杂函数 (R0912/R0914/R0915) - 提高可读性
  3. 减少函数参数 (R0913/R0917) - 简化接口
  4. 添加文档字符串 (C0114/C0115/C0116) - 提高可理解性

低优先级 (代码风格)

  1. 修复命名规范 (C0103)
  2. 避免重定义内置函数 (W0622)
  3. 修复行过长 (C0301)
  4. 规范文件编码 (W1514)

总结

当前代码库的主要问题是:

  1. 复杂度过高 - 大量函数参数过多、局部变量过多、分支/语句过多
  2. 重复代码 - 多处代码重复,需要提取公共逻辑
  3. 文档不足 - 大量模块、类、函数缺少文档字符串
  4. 异常处理不规范 - 过多使用裸异常捕获

建议按照优先级逐步重构,优先修复可能影响正确性的问题,然后逐步改善代码结构和可读性。