Плагин Sonar и Flex - доллары ($) не принимаются в именах классов Java

В отношении этой ошибки от Sonar: http://jira.codehaus.org/browse/SONAR-1865

и этот (который ссылается на приведенный выше): http://jira.codehaus.org/browse/SONAR-1637

Я все еще вижу эту проблему.

Я использую сервер Sonar версии 2.12.
Я использую Hudson версии 2.2.0.
Я установил подключаемый модуль Sonar в Hudson версии 1.7.2.

и, самое главное, у меня установлен плагин Flex на сервере Sonar. Версия плагина Flex — 0.4.

Когда я запускаю mvn sonar:sonar -Pflex в проекте flex, я получаю эту ошибку в трассировке стека:

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. Он был автоматически сгенерирован из Java в ActionScript с помощью GraniteDS.

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. И почему ошибка показывает «внутренние классы java ...», если это класс flex/actionscript? Кто-нибудь все еще видит это поведение ошибки?


person 742626    schedule 17.01.2012    source источник
comment
Привет, у меня тоже нет ответа для вас, но я предполагаю, что плохая ошибка заключается в том, что этот FlexFile.java: 79 скопирован из, о, я не знаю JavaFile :). Вероятно, это ошибка копирования и вставки. Я не смог найти точные правила для имен классов, но вызовет ли это проблему, если вы удалите знак доллара из имени? Я не вижу ничего другого, что могло бы вызвать эту ошибку. Мое единственное предположение состоит в том, что используемый им синтаксический анализатор работает некорректно (компилируется ли этот код с помощью mxmlc?)   -  person shaunhusain    schedule 18.01.2012
comment
Я не знаком с сонаром, но использую maven и flexmojos для компиляции (иногда мы получаем случайные ошибки, но, к счастью, источник доступен для проверки). Я предполагаю, что они скопировали большую часть кода синтаксического анализатора Java для AS3, поскольку они очень похожи на языки, но отсюда и ошибка.   -  person shaunhusain    schedule 18.01.2012
comment
Да, нашел: grepcode.com/file/repo1.maven.org/maven2/   -  person shaunhusain    schedule 18.01.2012
comment
А вот файл, который, вероятно, был скопирован: grepcode.com/file/repo1.maven.org/maven2/org.codehaus.sonar/   -  person shaunhusain    schedule 18.01.2012
comment
Ах хорошо, это объясняет текст в ошибке. Но исправление, похоже, не применялось к FlexFile.java из указанных ошибок. Мой код и проект прекрасно компилируются с использованием maven и flexmojos. мое приложение работает нормально. Это происходит только тогда, когда я запускаю Sonar в своем гибком проекте. У меня также есть Sonar, работающий в моих java-проектах, и они работают нормально. Это просто гибкий проект, в котором Sonar выдает эту ошибку.   -  person 742626    schedule 18.01.2012
comment
Я бы, вероятно, просто взял исходный код плагина здесь: repo1.maven.org/maven2/org/codehaus/sonar-plugins/, затем просто удалите это условие и выдачу ошибки и перекомпилируйте его, я не не видите причин, чтобы эта проверка была в плагине?   -  person shaunhusain    schedule 18.01.2012


Ответы (1)


Проблема была создана на стороне плагина Sonar Flex ( http://jira.codehaus.org/browse/SONARPLUGINS-1623 ) и, скорее всего, будет исправлено в следующем выпуске.

person Godin    schedule 18.01.2012
comment
Круто, в настоящее время я не работаю с этим, хотя он выглядит довольно красиво, спасибо, что опубликовали ошибку. - person shaunhusain; 19.01.2012