【问题标题】:Apache Solr - How to index source code filesApache Solr - 如何索引源代码文件
【发布时间】:2016-07-24 00:42:48
【问题描述】:

我想编写一个能够在源代码文件中搜索特定模式的程序......换句话说:输入是一段代码,例如:

int fib (int i) {
  int pred, result, temp;

  pred = 1;
  result = 0;

  while (i > 0) {
    temp = pred + result;
    result = pred;
    pred = temp;
    i = i-1;
  }
  return(result);
}

输出是包含这段代码或类似代码的文件。

在开源世界中,代码在其他项目中被重用。特别是库经常被复制到项目中。为了使错误修复更容易,我需要能够知道在哪些项目中使用了特定的库或代码。

因此我想尝试使用 apache solr。我不知道这是否是个好主意(我会很高兴一切可以帮助我)

我的计划是索引我的源代码文件……因此我需要一些工具吗?标记源代码文件。就像给我所有函数、变量等的名称一样。我可以用来提供 solr 索引的输出。但我不确定 apache solr 中是否已经有 tokenizer 或 dataimporthandler 可以解决问题?

【问题讨论】:

    标签: java apache indexing solr


    【解决方案1】:

    Apache Solr 在这里可能不是最佳选择。你比这里的字符串比较更像树/图比较问题。我建议为此使用专门的工具。

    如果您确实想手动完成,您基本上需要一个带有树遍历 API 的解析器或其他方式来获取令牌流/树。这在很大程度上取决于您正在解析的语言。 ANTLR 之类的东西可能是一种方法,如果它具有您的语言的语法。

    或者,您可以从已编译的代码中提取信息,前提是它足够结构化。对于 Java,ASM 之类的东西可能会完成这项工作。

    但是您仍然需要弄清楚表示。回答自己 - 我怎么知道这两段代码相似这个问题应该是正确的第一步。

    【讨论】:

      【解决方案2】:

      我不确定这是否可以使用 solr 完成,因为不同的项目可能使用不同的命名约定。

      如果有帮助,请查看以下链接:

      Tools for Code Seacrh

      【讨论】:

        猜你喜欢
        • 2012-04-13
        • 1970-01-01
        • 2012-10-22
        • 2014-12-16
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 2017-09-01
        相关资源
        最近更新 更多