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
中,quality
、style
和test
都被声明为伪目标,表示这些目标只是用来执行相应的命令,并不会生成与它们同名的文件。
2. check_dirs
变量
check_dirs := scripts src tests
- 这行定义了一个名为
check_dirs
的变量,表示需要检查的目录列表。在这个例子中,check_dirs
包含了scripts
、src
和tests
这三个目录。 - 这些目录可能包含了项目的源代码、脚本和测试代码,
quality
和style
目标会对这些目录进行检查和格式化。
3. quality
目标
quality:
ruff check $(check_dirs)
ruff format --check $(check_dirs)
-
这个目标执行两个操作:
ruff check $(check_dirs)
:使用ruff
工具对check_dirs
中的代码进行代码质量检查。ruff format --check $(check_dirs)
:使用ruff
检查代码的格式是否符合预期,但不会自动修复。这个命令通常用于确保代码格式符合团队的规范。
-
运行
make quality
会对代码进行质量检查和格式检查,而不改变代码。
4. style
目标
style:
ruff check $(check_dirs) --fix
ruff format $(check_dirs)
-
这个目标执行两个操作:
ruff check $(check_dirs) --fix
:使用ruff
工具对check_dirs
中的代码进行代码质量检查,并自动修复发现的问题(如果可以修复)。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
文件定义了三种任务:
make quality
:检查代码的质量和格式,但不自动修复。make style
:检查并修复代码质量问题,并格式化代码。make test
:运行测试,以验证代码的正确性。
通过这些命令,开发者可以快速执行这些常见任务,保持代码质量、风格一致性,并确保功能的正确性。