Masonite是一个现代的、以开发者为中心的Python网络框架,大约有18万以上的下载量,它的建立有两个重要的目标--包括电池和一个极其可扩展的架构。
"独特的挑战是,我们需要能够接受来自数以百计的不同开发者的代码,并且能够遵守一套标准,而有些开发者甚至可能不知道这些标准的存在。"
- 乔-曼库索,Masonite的创造者
Masonite非常适合初学的开发者进入他们的第一个网络应用程序,以及需要利用Masonite的全部潜力来完成他们的应用程序的经验丰富的开发者。
在维护Masonite的代码质量方面,你面临哪些挑战?
Masonite作为一个开源的Python框架项目有一个独特的挑战。*这个独特的挑战是,我们需要能够接受来自数以百计的不同开发者的代码,并且能够遵守一套标准,而有些开发者甚至可能不知道这套标准的存在。*这些标准可以防止诸如代码不一致和安全漏洞,但甚至是未来的问题,如由于变量名称被覆盖而难以发现的错误。
Masonite处于一个独特的位置,它是主要商业应用的骨干,企业依赖于Masonite的稳定和性能。对Masonite的改进可以为互联网上成百上千的网站带来改进。我们依靠良好和可维护的代码质量来帮助我们实现这些目标。
最后,Masonite是一个开源项目,所以我们还没有大量的预算可以用于专门的代码审查。幸运的是,我们将拉动请求保持在一个可控的规模,以便能够将志愿者的时间用于代码审查,但有时很难找到志愿者的时间来及时审查拉动请求,并保持我们社区的参与和快乐。
采用DeepSource有帮助吗?如果是的话,是怎样的?
在我们安装了DeepSource之后,我对我们的拉取请求感到成倍的自信。令人惊讶的是,你通常不会发现许多可能的小问题。由于DeepSource适合GitHub的状态检查,当DeepSource检查通过时,我对合并拉动请求感到非常有信心。在做完代码审查和检查实现细节后,我可以依靠DeepSource来检查大量的其他事情,我不再需要花费大量的时间。整合DeepSource已经令人难以置信。
此外,通过阅读DeepSource在代码中发现的问题,我和Masonite的维护者们甚至成为了更好的开发者,因为我们现在知道在创建新功能或修复问题时应该在代码库中寻找什么。我们把这些知识带到整个社区,带到其他企业,带到其他项目。
我发现最有用的是那些真正难以发现的问题,比如一个变量名在同一个作用域中被覆盖,或者本地作用域中的一个变量覆盖了全局作用域。我们通常将我们的Python类保持在最低水平,但即使你有一个500行长的文件,有15个以上的导入,也很难记住一个导入的所有全局作用域。
此外,我们处于一个独特的位置,对代码库有0%知识的人需要推送一个小的修复,我在GitHub问题上做了详细解释。为了让社区参与到Masonite中来,我们鼓励那些从未为开源项目做过贡献的开发者为Masonite仓库做贡献。这些厉害的人可能对Masonite甚至Python一无所知。因此,如果我们在代码审查中不小心,很容易将问题引入框架,而DeepSource有助于减轻这种恐惧,因为它成为工具箱中的一个伟大工具。
你如何看待与GitHub的整合?
关于DeepSource与GitHub的集成,有几件事我非常喜欢。首先是它与GitHub的状态检查无缝集成,而且只需几秒钟就能运行。DeepSource总是第一个回来的检查,我可以迅速看到它,审查它,并在一两分钟内做出修改。
我真正喜欢DeepSource的GitHub集成的另一件事是,它是高度可定制的。DeepSource喜欢捕捉所有的问题,这很好,但不是所有的问题都是框架的真正问题。例如,一个框架并不真正知道哪些异常会被抛出,所以它需要一个非常广泛的异常捕捉规则,这在任何应用程序中通常是一个坏主意。有了DeepSource,我们就能够定制这些检查,直到文件级别,并忽略这些问题。很快,我们就能在持续集成过程中拥有一个非常强大的工具,为我们的应用程序量身定做。
你还有什么想说的吗?
DeepSource是一种非常容易集成的东西,它不仅可以立即节省无数的时间,而且还可以在问题变成问题之前抓住它们,从而节省无数潜在的时间。
与DeepSource的整合是不费吹灰之力的,它是那些我认为将被整合到每个资源库中的服务之一,无论大小。我迫不及待地想看到DeepSource发挥其全部潜力,因为人们在行业中越来越多地发现它。