我不是个好的设计者,因为我总喜欢把简单问题复杂化,不过你的project实在不怎么简单,所以希望我的建议有点用。
我建议你使用两项很有用的技术:
基于JSR-000094的Java Rule Engine API
和基于JSR-000175的JAVA Metadata Facility
基于Rule Engine你可以使系统得到灵活的扩展,
所有的错误可能都以Rule的形式出现,比如:
if line start with int, char, Integer.... then mark here can cause a defination mistake
if line contain { then mark here can cause a bracket not match mistake
诸如此类,只要定义好Rule Engin,以后想添加一种错误,就添加一条Rule就可以了。
通过Metadata,你可以使用Tag,来定义要执行的操作,实现你所提到的Template里面的标签。
例如:@bugtype1here{... code to remove a semicolon ...}
这样用Rule来产生Meta-Tag,再通过Meta-Tag来执行对代码的修改,基本就满足你的需要了。
另外,有一个工具叫做ANTLR,可以进行代码分析,我只是听说,没有用过,你可以试试。
我建议你使用两项很有用的技术:
基于JSR-000094的Java Rule Engine API
和基于JSR-000175的JAVA Metadata Facility
基于Rule Engine你可以使系统得到灵活的扩展,
所有的错误可能都以Rule的形式出现,比如:
if line start with int, char, Integer.... then mark here can cause a defination mistake
if line contain { then mark here can cause a bracket not match mistake
诸如此类,只要定义好Rule Engin,以后想添加一种错误,就添加一条Rule就可以了。
通过Metadata,你可以使用Tag,来定义要执行的操作,实现你所提到的Template里面的标签。
例如:@bugtype1here{... code to remove a semicolon ...}
这样用Rule来产生Meta-Tag,再通过Meta-Tag来执行对代码的修改,基本就满足你的需要了。
另外,有一个工具叫做ANTLR,可以进行代码分析,我只是听说,没有用过,你可以试试。