vscode拥有强大的功能. 但是, 之前却没有用到, 这些年都用了个寂寞. 呵呵呵, 一直在用假的vscode….

代码跳转
  • 跳转到定义:Cmd + 单击(类/方法名)
  • 返回调用处Ctrl + -(Control + 减号)
  • 符号搜索Cmd + T 全局符号搜索
查看api
  • 悬停提示:鼠标悬停在类/方法上显示文档, 悬停可以查看一条极简介绍.
  • 内联提示:
    • 鼠标右键: qt doc
    • 需要:
      • 安装qt python扩展
      • // settings.json
        “qtForPython.documentation”: “PySide6”
附加python帮助
  • help(QMainWindow)
  • print(dir(QMainWindow))
20251024 补充

最终使用这些工具:

  • python 微软, 基础包, 语法高亮, 环境, jupyter, 调试
  • pylance 微软, 语言服务器, 自动补全, 类型检查, 跳转定义, 引用查找, intellisense(智能感知)
  • pylint 微软 代码规范, 导入的import被本地变量/函数覆盖, 唯有这个可以报出来: 2025-08-13-python重定义外部变量
  • ruff 发布者: astral, 标识符: charliermarsh.ruff, 极速linter+formatter

20251104

ruff 也可以报告变量遮盖问题

[tool.ruff]
fixable = ["F401", "I001"] # 自动修正, 必须被select包含       
ignore = ["E", "W", "RUF003", "RUF052"] # 忽略得规则       
indent-width = 2 
line-length = 1200 # 允许长行
# 会报出来                 
select = ["A","F", "I", "B", "UP", "T", "RUF", # 这里的A就是变量遮盖报警
    "E711", "E712", "E721", "E731",      # 逻辑/可读性
    "E117", # 过度缩进
    "E101",      # 混用tab
    "E741", "E742", "E743",  # 易混淆变量名
    "SIM","C90", "ARG", "PIE",
] 
preview = true
[tool.ruff.format] # 纯粹美化排版
quote-style = "preserve" # 单引号
skip-magic-trailing-comma = true # 不因为尾随逗号就展开
# 查看自己缺少哪些
ruff rule --all | awk -F'[– ]' '/^[A-Z]/ {print $1}' | sort -u | comm -23 - <(\
  python -c "import tomli,sys;print('\n'.join(sys.argv[1:]))" A F I B UP T RUF C90 D ERA FURB G N PTH RET SIM TCH TRY \
  | sort -u)

# 查看规则是否冲突
ruff check --preview --select=A,F,I,B,UP,T,RUF,SIM,C90,ARG,PIE,E117,E101,E711,E712,E721,E731,E741,E742,E743 .
前缀 说明 典型规则举例
C90 圈复杂度 > 10 告警 C901
D pydocstyle 文档字符串规范 D100 ~ D417
ERA 注释掉的无用代码 ERA001
FURB refurb 性能/可读性提示 FURB113Path.read_text 代替 open
G flake8-logging-format G001 日志里 % 格式化
N pep8 命名规范 N801 类名驼峰、N806 小写函数里用 CamelCase 变量
PTH flake8-use-pathlib PTH123Path.open 代替 open
RET flake8-return RET504 没必要先赋值再 return
SIM flake8-simplify SIM118key in dict 代替 key in dict.keys()
TCH flake8-type-checking TCH003 延迟导入,解决循环依赖
TRY flake8-try-except TRY004ValueError 而不是宽泛的 Exception
前缀 说明
ANN flake8-annotations,强制函数签名写类型注解
ARG flake8-unused-arguments,函数签名里没用到的参数
COM flake8-commas,尾随逗号风格统一
DTZ flake8-datetimezone,强制 datetime.now(tz=)
EM flake8-errmsg,异常信息必须写成 raise ValueError("...") 而不是 f-string
ICN flake8-import-conventions,强制 import numpy as np
INP flake8-no-pep420,不允许隐式 namespace package
PIE flake8-pie,各种 Python 语法糖简化
PL pylint 等价规则(ruff 移植版),量大且慢,可挑着开,例如 PLR0913 参数过多
PT flake8-pytest-style,pytest 风格
Q flake8-quotes,引号风格(你用了 preserve,可不开)
S flake8-bandit,安全漏洞,如 S311 random.random 用于密码
SLF flake8-self,私有属性访问检查
TID flake8-tidy-imports,禁止相对导入、禁止 import 被撤包的模块
YTT flake8-2020,不要把 sys.version[0] 当成大版本

setting.json样例

  • 在oh-my-mac项目:
    • 项目地址: git@github.com:lornally/oh-my-mac.git
    • 安装列表->python里面