【问题标题】:Is there an easy way to tell which URLs are unused?有没有一种简单的方法来判断哪些 URL 未使用?
【发布时间】:2014-03-22 21:24:17
【问题描述】:

我有一个 Django 项目,它正在进入第四年的开发阶段。在这四年中,许多 URL(以及视图功能)已经过时。我没有删除它们,而是以“以防万一”的态度离开它们。现在我正在寻找清除未使用的 URL 和未使用的视图函数。

有什么简单的方法可以做到这一点,或者只是通过所有代码来解决这个问题?我对删除某些内容感到紧张,直到几周/几个月后才意识到它的重要性。

【问题讨论】:

    标签: django django-views django-urls


    【解决方案1】:

    这个想法是遍历urlpatterns 并检查status_code 是否为200:

    class BasicTestCase(TestCase):
        def test_url_availability(self):
            for url in urls.urlpatterns:
                self.assertEqual(self.client.get(reverse('%s' % url.name)).status_code,
                                 200)
    

    我知道它可能并非在所有情况下都有效,因为可能存在具有“动态”性质的 url 和动态 url 部分,但是,它应该为您提供基本概念。请注意,reverse() 也接受参数,以防您需要将参数传递给底层视图。

    另见:Finding unused Django code to remove

    希望对您有所帮助。

    【讨论】:

    • 据我了解,问题更多与存在的任何未使用的 URL 模式有关,而不是所有可访问的 URL 模式。如果我错了,请纠正我。
    • @karthikr mhm,听起来你是对的。看看它是否对 OP 有帮助。
    • @karthikr 正确。我知道我有一些存在并且可能可以访问,但有一段时间没有使用过。不过,也许这个答案会是一个好的开始。
    • 如果我错了,@Garfonzo 纠正我。基本上,您希望以某种方式自动分析您的模板,以查看哪些 urls/views 没有被使用。如果是这样,端到端测试在这里会有很大帮助——如果你有一个很好的覆盖率,你可以分析覆盖率报告,看看哪些代码块没有被使用..
    • @alecxe 差不多。我浏览了您发布的链接,并在下面找到了一些线索。我认为有一些好东西我可以实施以实现我所追求的。谢谢!
    【解决方案2】:

    您正在寻找覆盖率,这基本上是“实际使用了多少编写的代码”。

    覆盖率分析通常通过测试来完成 - 找出测试覆盖了多少百分比的代码 - 但没有什么能阻止您做同样的事情来找出孤立的视图。

    @sk1p 已经在How to get coverage data from a django app when running in gunicorn 上回答了,而不是重复这个过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-16
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多