2010-05-14 2 views
2

Я ищу способ сбора зависимостей файлов от файлов Flex ActionScript и MXML. Я надеялся, что mxmlc может выплюнуть их (например, вариант gcc -M), но его список опций, похоже, не имеет никакого значения. Я мог бы написать парсер, но предпочел бы не изобретать колесо, если это уже сделано, особенно с учетом двух очень разных языков. В частности, импорт зверей и неявный импорт в упаковке могут быть неприятными.Как собирать зависимости из файлов Adobe Flex?

Есть ли доступная программа для этого?

+0

На мой взгляд, такое удобство было бы хорошим. Но все равно не будет никакого способа рассказать, что слушает события, отправленные определенным классом. – Robusto

+0

@Robusto: Правда, график слушателей был бы полезен для многих вещей. В этом случае, однако, я пытался собирать зависимости для компиляции для Makefile, с дополнительным преимуществом поиска устаревших файлов для обрезки из репозитория. – eswald

ответ

0

Опция -link-report mxmlc создает файл, содержащий большую часть соответствующей информации, за исключением того, что он сообщает о поддельных именах файлов для внедренных активов и игнорирует включенные исходные файлы. Для того, чтобы собрать все, теперь у меня есть следующие в моей Makefile:

.deps/%.d: .deps/%.xml 
    # [email protected]: $< 
    grep '<script name=./' $< | cut -f2 -d'"' | cut -f1 -d'(' | cut -f1 -d'$$' | sort -u | sed -e "s|^$$(pwd)/||" > .deps/$*.f 
    grep '\.mxml$$' .deps/$*.f | xargs grep -H 'mx:Script source' | sed -s 's|/[^/]*.mxml:.*source="\([^"]*\)".*|/\1|;' > .deps/$*.i 
    for path in $$(grep -h '\.\(mxml\|as\|css\)$$' .deps/$*.[fi] | xargs grep '\bEmbed([^.)]' | \ 
     sed "[email protected]\\(\\w\\+\\)/.*Embed([^'\")]*['\"][./]*\\([^'\"]*\\)['\"] *[,)].*@\\1/*/\\[email protected]"); \ 
     do find */src -path "$$path"; done | sort -u > .deps/$*.e 
    cat .deps/$*.[fie] | sed -e "s|^|$(flashpath)$*.swf [email protected] : |" > [email protected] 

# This includes targets, so should not be before the first target defined here. 
built := $(wildcard .deps/*.xml) 
include $(built:xml=d) 

Вся mxmlc и CompC команды в Makefile теперь -link-отчет, генерирующий соответствующим образом, с именем файла .xml в каталоге .deps. Мне по-прежнему приходится искать файлы для директив Embed и Script, но сложная часть (определение того, какие классы входят в комплект) была сделана для меня. Я мог бы использовать настоящий парсер для каждого шага, но grep, sed и cut работают достаточно хорошо для файлов, как указано.

0

Я подозреваю, что, поскольку mxmlc довольно умный и правильно обрабатывает зависимости, мало кто должен будет самостоятельно определить зависимости, и поэтому инструмент, возможно, не появился.

Я думаю, что синтаксический анализ заявлений на импорт был бы способом?

+0

Если бы это было так просто, как просто инструкции импорта ... Существуют также пространства имен XML, которые устанавливаются в пакеты, а классы неявно импортируются в их пакеты, причем файлы в пакетах разбиваются на два дерева источников. – eswald