我正在寻找一种从Flex ActionScript和MXML文件中收集文件依赖关系的方法。我希望mxmlc可以吐出来(比如gcc的-M选项),但它的选项列表似乎没有任何相关性。我可以编写一个解析器,但如果已经完成,我宁愿不重新发明轮子,特别是考虑到两种截然不同的语言。特别是,明星进口和包装内隐式进口可能很麻烦。
是否有可以为我执行此操作的程序?
答案 0 :(得分:0)
我怀疑由于mxmlc非常智能并且能够正确处理依赖关系,因此很少有人需要自己找出依赖关系,因此该工具可能尚未出现。
我想解析import语句会是一种方法吗?
答案 1 :(得分:0)
mxmlc的-link-report选项会生成一个包含大部分相应信息的文件,但它会报告嵌入资源的伪文件名,并忽略包含的源文件。为了收集所有内容,我现在在makefile中有以下内容:
.deps/%.d: .deps/%.xml
# $@: $<
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 "s@\\(\\w\\+\\)/.*Embed([^'\")]*['\"][./]*\\([^'\"]*\\)['\"] *[,)].*@\\1/*/\\2@"); \
do find */src -path "$$path"; done | sort -u > .deps/$*.e
cat .deps/$*.[fie] | sed -e "s|^|$(flashpath)$*.swf $@ : |" > $@
# This includes targets, so should not be before the first target defined here.
built := $(wildcard .deps/*.xml)
include $(built:xml=d)
makefile中的所有mxmlc和compc命令现在都有-link-report,在.deps目录中生成一个适当命名的.xml文件。我仍然需要搜索Embed和Script指令的文件,但是我已经完成了很难(确定包括哪些类)。我可以为每一步使用真正的解析器,但grep,sed和cut对于给定的文件工作得足够好。