2013-02-14 41 views
1

在C#(Visual Studio)中给出解决方案时,我需要检测遵循某个模板的类并提取该模板以供以后的代码生成。从多个文件中提取模板(模式检测)

换句话说,我需要比较2个类(文件)并从中提取一个通用模板。 当程序员必须编写较少的代码时,此模板将用于以后的代码生成。

有没有任何机构可以给我一个关于如何做到这一点的想法?

还有一个问题,是否有可能获得由Visual Studio制作的语法/语义树?

TNX

回答

0

最后我用户

  • NRefactory编译代码,我获得的AST。
  • 使用自定义标签重写代码(EQ:用于 - > loop_start)
  • 拼合树获得长标签阵列(EQ:class_start,method_start,...结束,结束)
    这是2档
  • 我比较了2个数组,使用“贪婪的字符串平铺算法”
  • 并从这里我已经有了模板文件。
0

对于第一个问题,我想你应该考虑差异算法来找到2文本文件,例如公用部分here

对于第二个问题,我建议看看Roslyn

+0

谢谢,但我需要的是更多的剽窃检测,如[莫斯](http://theory.stanford.edu/~aiken/moss/)。代码不需要完全相同。 – 2013-02-15 13:46:02

+0

罗斯林结束了一个很好的工具,但只适用于VS 2012,不支持VS 2010。Tnx – 2013-02-15 13:47:41

+0

啊,好的。也许你可以编译这些文件,然后加载程序集以便通过反射进行分析,如果你想手动完成的话。 或者你可以使用一些[工具(链接)](http://stackoverflow.com/questions/38635/what-static-analysis-tools-are-available-for-c)。 Roslyn在[NuGet(link)](http://nuget.org/packages/Roslyn)中有可用的二进制文件,所以它可能与免费的Express版本的VS 2012 – 2013-02-15 14:39:43