软件包需求检查器,flake8插件
flake8-requirements的Python项目详细描述
此模块为flake8提供一个插件,用于检查/验证 包导入要求。它报告缺少和/或未使用项目直接依赖项。
此插件添加了新的flake8警告:
- I900:包未列为要求。
- I901:需要但未使用包。
重要注意事项
为了收集项目的依赖项,这个检查器从 setup.py文件存储在项目的根目录中。代码评估是用 eval()函数。作为退步 方法,此检查程序还尝试从requirements.txt文件加载依赖项。
在这一点上,非常重要的是要意识到上述做法的后果。一个 可能会将恶意代码注入setup.py文件,此检查程序将执行该文件。 因此,此检查器决不能用于检查来自未知源的代码!然而,在大多数情况下 例如,一个验证来自已知源的代码(例如自己的代码),另一个运行存储在 反正是setup.py文件。最坏的情况是,这个检查程序将执行 相当于python setup.py,它应该是等幂的(这是一个可怕的设计 setup.py如果不是的话。
如果您在检查flake8时注意到一些副作用,那么您的setup.py文件是 以标准方式(例如pypa-sampleproject)编写,请填写错误报告。
安装
您可以使用以下命令安装、升级或卸载flake8-requirements:
$ pip install flake8-requirements $ pip install --upgrade flake8-requirements $ pip uninstall flake8-requirements
定制
对于具有自定义(私有)依赖项的项目,可以提供项目名称和 提供的模块。这样的映射可以在flake8调用期间在命令行上设置 --known-modules选项,或者在配置的[flake8]部分中 文件,例如setup.cfg。自定义映射的语法如下:
1st-project-name:[module1,module2,...],2nd-project-name:[moduleA,moduleB,...],...
如果某些本地项目在setup.py文件中缺少“name”属性(强烈建议 但是,如果不提供“name”属性,则可以在映射中省略项目名,然后 如下所示:
:[localmodule1,localmodule2,...],1st-local-library:[moduleA,moduleB,...],...
现实生活示例:
$ cat setup.cfg [flake8] max-line-length = 100 known-modules = my-lib:[mylib.drm,mylib.encryption]