【问题标题】:Is there an automatic tool to find the DRY-ness of your code base?是否有自动工具来查找代码库的干性?
【发布时间】:2011-12-16 22:35:50
【问题描述】:

我是DRY principle的坚定拥护者:

每条知识在系统中都必须有一个单一的、明确的、权威的表示。

是否有任何工具可以测试代码库的 DRYness 量,并量化和确定具体示例以进行校正?

【问题讨论】:

    标签: dry


    【解决方案1】:

    PMD 的Copy Past Detector (CPD)

    很难找到重复的代码,尤其是在大型项目中。但 PMD 的复制/粘贴检测器 (CPD) 可以为您找到它!

    请注意,CPD 适用于 Java、JSP、C、C++、Fortran 和 PHP 代码。

    您可以在命令行运行它,有一个 ANT 任务和一个 Eclipse 插件。

    【讨论】:

      【解决方案2】:

      Simian

      Simian (Similarity Analyser) 识别 Java、C#、C、 C++、COBOL、Ruby、JSP、ASP、HTML、XML、Visual Basic、Groovy 源代码 代码甚至纯文本文件。事实上,simian 可以用于任何 人类可读的文件,例如 ini 文件、部署描述符、您 给它命名。

      Simian 在任何 .NET 1.1 或更高版本支持的环境中本机运行 在任何 Java 5 或更高版本的虚拟机上,这意味着 Simian 可以运行 几乎可以在您希望的任何硬件和操作系统上运行。 Java 和 .NET 运行时都包含在 分布。

      【讨论】:

      • 这是获得更多声誉的好方法。 +1
      • Python 的任何替代方案?
      【解决方案3】:

      Clone Detective for Visual Studio

      Clone Detective 是一个 Visual Studio 集成,可让您 分析 C# 项目中在其他地方重复的源代码。 重复很容易导致不一致,而且通常是 分解不良代码的指标。

      【讨论】:

        【解决方案4】:

        请参阅我们的CloneDR 工具,该工具使用计算机语言结构作为指导来查找准确和接近未命中的重复代码集。除了检测克隆之外,它还会向您展示一个粗略的抽象和解释克隆实例之间差异的参数绑定。

        它有许多语言的实例化:C、C++、C#、Java、JavaScript、PHP、COBOL、Python、PLSQL,...... 它倾向于在任何严重规模的系统中找到 10-15% 的重复代码(例如, 100K SLOC 及以上)。网站上有多种语言的示例报告,您可以下载试用版。

        【讨论】:

        • 我尝试使用它 - 必须填写试用表格(烦人),单击“项目说明符”链接(不寻常、令人困惑和损坏),重试在 cmdline 上尝试的命令,最终启动它,尝试导航到我的源目录,在此期间它挂起。然后我放弃了。这东西需要 UI 工作。
        • @ScottStafford:很抱歉给您带来不好的体验。您运行的是哪个版本的 CloneDR、使用哪种语言以及在哪个操作系统上运行?我们有相当多的组合学,有时这让我们受益匪浅。如果它坏了,我们显然想修复它。通常它运行良好。
        • @ScottStafford:实际上,从您的描述中很难准确地判断出挂的是什么。您是否愿意通过电子邮件将屏幕截图和一些解释性文本发送至 support@semanticdesigns.com?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多