静态代码分析是一种近似于程序运行时行为的技术。换句话说,它是在没有实际执行的情况下预测程序的输出的过程。这就是DeepSource所做的,静态分析您的项目并向您报告潜在的代码质量问题,这些问题可以在短时间内得到解决。
这就是我们在这个博客中要做的事情。我们将尝试把DeepSource集成到一个分叉的 repo上,特别是在一个Python项目上,并对其进行分析。我们将用自动修复工具进一步修复一些问题,并让转化器为我们的项目修复一些样式问题。
让我们开始吧!
注意:在本指南中,我们将只分析GitHub上的Python项目。然而,其他语言和平台的步骤是类似的。
将DeepSource与GitHub集成的步骤
DeepSource只需要几个步骤就可以在任何仓库上集成连续分析。这个过程看起来像这样:
- 在DeepSource上创建一个账户
- 挑选一个要分析的 Python 代码库。
- 访问 DeepSource 仪表板。
- 从版本库列表中选择你的项目。
- 添加 DeepSource 配置文件。
- 运行分析。
很简单,不是吗?现在让我们详细了解一下这些步骤。
我们首先会在GitHub上寻找一个python项目。

SIH-2019是一个国民账户统计的数据可视化项目,是在36小时内建成的。像这样短的时间跨度可能是引入代码质量问题的明显因素。
现在让我们分叉这个 repo,并打开我们的DeepSource仪表板,激活这个 repo。

从这个列表中,你可以选择你想运行分析的项目。这里,我选择了我分叉的pnijhara/sih-2019。点击版本库后,你将被引导添加一个DeepSource配置文件,即.deepsource.toml ,以便DeepSource在版本库上运行分析。配置文件包含排除文件模式,告诉DeepSource不要分析这些文件集,它们可以是迁移、示例代码、数据、模板等。紧接着是测试文件模式,以指定测试文件。这些模式都被写成glob模式。你可以在这里阅读更多关于如何正确书写这些模式的信息。之后,你必须指定你希望DeepSource在你的项目中寻找的语言。最后是一个转化器,以改善你的代码风格。
- 从项目的列表中,选择项目。
- 生成配置

你可以直接提交配置文件到GitHub,只需一次点击。这将为你的 repo 的主分支添加一个提交。或者你可以手动添加该文件。DeepSource将自动查看.deepsource.toml配置文件并开始运行分析。
仪表板概述
一旦你提交配置文件到GitHub,DeepSource就开始分析 repo。第一次运行可能需要一些时间,但大多在5分钟之内,并生成一份报告,其中包含可以修复的问题。

DeepSource将问题分为不同的类别,如反模式、错误风险、风格、性能、安全和文档。其中,DeepSource根据收集的数据向您推荐一些可被视为高优先级的问题。

自动的代码格式化
一旦分析完成,DeepSource就会自动发送与修复样式问题有关的PR,因为我们已经添加了Transformer(黑色)。

问题分流
虽然DeepSource确保误报率低于5%,但您仍然可以忽略那些您认为与项目不相关或故意制造的问题。在这里阅读更多关于忽略问题的信息。
在GitHub上公开问题
DeepSource允许您直接从您的 repo上的仪表板创建GitHub问题,让其他贡献者讨论和修复它。同样,这是一个简单的任务。你只需要打开DeepSource上的任何问题,然后点击 "在GitHub上创建问题 "按钮。这个按钮允许你直接在VCS供应商的仓库页面上创建一个问题。在问题创建之前,你可以编辑问题描述和标题,你还可以添加标签或将其分配给你团队中的某人。

这将把你重定向到你的repo,你可以打开一个问题。

注意:只有当仓库设置允许你这样做时,你才能通过这种方法创建GitHub问题。否则,你会得到一个404错误。
可自动修复的问题
DeepSource发现的许多问题都可以通过点击来自动修复。DeepSource 会为你发送一个带有修复内容的拉动请求,批准后可以立即合并。在上面的分叉项目中,DeepSource发现了278个问题,其中64个可以自动修复。寻找针对某个问题的 "自动修复 "按钮。

只需点击一下,一个PR就会被生成到repo中,并附加提交一个带有black(transformer)的格式化代码。

