Sonar和Flex插件 - java类名中不接受美元($)

时间:2012-01-17 19:40:27

标签: flex sonarqube class-names

参考Sonar的这个bug: http://jira.codehaus.org/browse/SONAR-1865

和这一个(交叉参考上面的那个): http://jira.codehaus.org/browse/SONAR-1637

我仍然看到这个问题。

我使用的是Sonar服务器版本2.12 我正在使用Hudson,版本2.2.0 我已经在Hudson 1.7.2版本中安装了Sonar插件。

最重要的是,我在Sonar服务器上安装了Flex插件。 Flex插件版本为0.4。

当我在flex项目上运行mvn sonar:sonar -Pflex时,我在堆栈跟踪中收到此错误:

Caused by: java.lang.IllegalArgumentException: Java inner classes are not supported : EntityEnums$ReportParameterName
    at org.sonar.plugins.flex.FlexFile.<init>(FlexFile.java:79)
    at org.sonar.plugins.flex.FlexFile.fromIOFile(FlexFile.java:165)
    at org.sonar.plugins.flex.FlexSourceImporter.createResource(FlexSourceImporter.java:37)
    at org.sonar.api.batch.AbstractSourceImporter.parseDirs(AbstractSourceImporter.java:75)
    at org.sonar.api.batch.AbstractSourceImporter.analyse(AbstractSourceImporter.java:69)
    at org.sonar.api.batch.AbstractSourceImporter.analyse(AbstractSourceImporter.java:60)
    at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:64)

这是我班级的样子,它抱怨:

这是一个Actionscript类,文件名为:EntityEnums$ReportParameterName.as。它是使用GraniteDS从java自动生成的ActionScript。

package com.digabit.core.db.entity.util {
    [Bindable]
    public class EntityEnums$ReportParameterName {

        public static const tnid:String = "tnid";
        public static const uname:String = "uname";
        public static const lc:String = "lc";
        public static const tnkey:String = "tnkey";
        public static const oid:String = "oid";

        public function EntityEnums$ReportParameterName()
        {
            super();
        }
   }
}

因此,根据错误报告,这已经在我拥有的早期版本的Sonar中得到修复;但我仍然在版本2.12中看到它。当这是一个flex / actionscript类时,为什么错误会显示“java inner classes ...”?还有人还看到这种bug行为吗?

1 个答案:

答案 0 :(得分:1)

问题已在Sonar Flex插件方面创建(http://jira.codehaus.org/browse/SONARPLUGINS-1623),并且很可能在下一版本中修复。