Python中的Makefile文件

Makefile 文件定义了一些可以通过 make 命令执行的任务,用于自动化常见的开发任务,比如代码质量检查、代码风格格式化以及运行测试。

.PHONY: quality style test

check_dirs := scripts src tests

quality:
	ruff check $(check_dirs)
	ruff format --check $(check_dirs)

style:
	ruff check $(check_dirs) --fix
	ruff format $(check_dirs)

test:
	CUDA_VISIBLE_DEVICES= pytest tests/

以下是对每个部分的解释:

1. .PHONY 声明

.PHONY: quality style test

  • .PHONY 是一个特殊的 Makefile 目标,它告诉 make 这些目标不是文件名,而是伪目标。伪目标是指那些没有实际文件对应的目标,只是为了执行一些命令。
  • 在这个 Makefile 中,qualitystyletest 都被声明为伪目标,表示这些目标只是用来执行相应的命令,并不会生成与它们同名的文件。

2. check_dirs 变量

check_dirs := scripts src tests

  • 这行定义了一个名为 check_dirs 的变量,表示需要检查的目录列表。在这个例子中,check_dirs 包含了 scriptssrctests 这三个目录。
  • 这些目录可能包含了项目的源代码、脚本和测试代码,qualitystyle 目标会对这些目录进行检查和格式化。

3. quality 目标

quality:
	ruff check $(check_dirs)
	ruff format --check $(check_dirs)
  • 这个目标执行两个操作:

    1. ruff check $(check_dirs):使用 ruff 工具对 check_dirs 中的代码进行代码质量检查。
    2. ruff format --check $(check_dirs):使用 ruff 检查代码的格式是否符合预期,但不会自动修复。这个命令通常用于确保代码格式符合团队的规范。
  • 运行 make quality 会对代码进行质量检查和格式检查,而不改变代码。

4. style 目标

style:
	ruff check $(check_dirs) --fix
	ruff format $(check_dirs)
  • 这个目标执行两个操作:

    1. ruff check $(check_dirs) --fix:使用 ruff 工具对 check_dirs 中的代码进行代码质量检查,并自动修复发现的问题(如果可以修复)。
    2. ruff format $(check_dirs):使用 ruff 对代码进行格式化,使其符合预期的风格。
  • 运行 make style 会自动修复代码中的问题并格式化代码,以确保代码符合团队的风格规范。

5. test 目标

test:
	CUDA_VISIBLE_DEVICES= pytest tests/

  • 这个目标运行测试:

    • CUDA_VISIBLE_DEVICES=:在运行测试时,明确指定不使用任何 GPU。如果你有多个 GPU,这个命令可以控制在哪些设备上运行测试。
    • pytest tests/:使用 pytest 工具运行 tests/ 目录中的测试文件。
  • 运行 make test 会执行项目中的测试,以确保代码的正确性。

总结

这个 Makefile 文件定义了三种任务:

  1. make quality:检查代码的质量和格式,但不自动修复。
  2. make style:检查并修复代码质量问题,并格式化代码。
  3. make test:运行测试,以验证代码的正确性。

通过这些命令,开发者可以快速执行这些常见任务,保持代码质量、风格一致性,并确保功能的正确性。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值