是否有任何工具可以重构java代码库的编码风格?

时间:2011-01-22 14:26:54

标签: java refactoring coding-style

通常,在对现有项目进行一些工作时,我会选择代码库中已经建立的任何样式。但我们的团队必须维护多个中小型项目,这些项目在编码风格上略有不同。如果我们能够清理这些差异,那将更有效,更少混乱。

所以我正在寻找一种允许我重构现有风格的工具。标准代码格式化工具已经提供了许多功能,例如更改缩进样式。我缺少的是一个允许我去除字段和参数名称前缀的工具。在某些项目中,所有成员都以“m”为前缀,所有参数都以“p”为前缀,静态成员以“s”为前缀。

该工具应该能够处理如下情况:

void setValue(String pValue) {
  mValue = pValue;
}

应该成为:

void setValue(String value) {
  this.value = value;
}

该工具应在以下情况下生成警告:

void setValue(String pValue) {
  int value = 42
}

我知道每个主要IDE都提供重构:重命名功能。我正在寻找的是一个处理整个代码库的工具,而不需要单独遍历每个参数/字段。

修改

许多答案都提到了重新格式化源代码或根据一组样式规则检查代码库的工具。我知道这些工具存在。我特别想要的是一个高级工具,它允许我删除范围特定的变量名称前缀。

6 个答案:

答案 0 :(得分:2)

我一直在寻找类似甚至更高级的工具。我试图实现设计指标,这些指标非常依赖于上下文。我找到了一些工具,这些工具是商业的,而且像Ndepend和reflectk一样昂贵。我还发现了一些像Hammurapi这样的开源工具。还有Checkstyle,Findbugs和PMD等工具,可用于非常简单的用例。我找到的最好的工具是MoDisco。它基于Eclipse EMF,允许生成代码模型,而不是进行一些查询或转换(使用M2M工具)。我遇到的唯一问题是标准的~20k LOC项目相当慢。试一试,也许就你的用例来说就足够了。

答案 1 :(得分:1)

您是否尝试过Eclipse的Clean Up工具?当然,它不会处理你在这里展示的一些例子,但在我看来它做得相当不错。

答案 2 :(得分:0)

我不知道现有的项目会为你做这件事。

你考虑过写自己的吗?例如,Eclipse框架确实提供了可靠的代码格式化工具。你有没有调查过扩展其中一个来做你的建议?检测用你提到的模式命名的变量应该相当简单。

我意识到这不是一个理想的解决方案。但是,如果你有足够大的代码库,那么手动执行所有编辑可能更具成本效益。

答案 3 :(得分:0)

听起来像Jalopy 可能的帮助。

Jalopy允许您定义代码格式样式,然后它可以读取文件,包或整个项目并重新格式化。我不记得它是否可以进行更复杂的重构,例如将局部变量的样式更改为不使用匈牙利表示法(mVar废话),但它可以在所需的格式,包围,排序等格式之间进行更改。

我过去使用过Jalopy,效果很好。我甚至在人们拥有不同个人编码风格的团队中使用它,然后在提交时我们都同意Jalopy自动处理的某种格式。 (当你检查出来时,你按照自己的方式进行格式化,当它被重新检查时,会得到团队同意的格式,等等。)

但是有一个问题,看起来它已经维持了一年左右。但是,有一个commercial version too更新近 - 似乎努力朝这个方向发展。旧的版本仍然没问题。

还有其他类似的商业产品,如Jindent

答案 4 :(得分:0)

Eclipse IDE是解决问题的最佳选择..

答案 5 :(得分:-2)

FindBugs是一个非常好的代码静态分析工具。它真正探索了潜在的错误  并且易于集成到IDE和构建工具中。