2010-05-14 1 views
2

저는 Flex ActionScript 및 MXML 파일에서 파일 종속성을 수집하는 방법을 찾고 있습니다. mxmlc가 (gcc의 -M 옵션과 같은) mxmlc를 뱉어 낼 수 있기를 바랬지 만, 옵션 목록에는 관련성이없는 것으로 보입니다. 나는 파서를 쓸 수는 있지만 이미 완성 된 경우에는 바퀴를 재발 명하지 않는 것을 선호합니다. 특히 매우 다른 두 언어가 관련되어 있다면 더욱 그렇습니다. 특히, 스타 수입 및 패키지 내 암시 적 수입은 번거로울 수 있습니다.Adobe Flex 파일의 종속성은 어떻게 수집해야합니까?

나를 위해이 프로그램을 사용할 수 있습니까?

+0

내 의견으로는, 이런 종류의 편의는 좋은 것입니다. 그러나 특정 클래스에서 파견 된 이벤트를 청취하고있는 것을 알 수있는 방법은 아직 없습니다. – Robusto

+0

@Robusto : 사실, 청취자의 그래프는 많은 것들에 도움이 될 것입니다. 그러나이 경우 저장소에서 트리밍 할 쓸모없는 파일을 찾는 이점이있는 Makefile에 대한 컴파일 종속성을 수집하려고했습니다. – eswald

답변

0

mxmlc의 -link-report 옵션은 포함 된 에셋의 가짜 파일 이름을보고하고 포함 된 소스 파일을 무시한다는 점을 제외하면 대부분의 적절한 정보가 포함 된 파일을 생성합니다. 모든 것을 수집하려면, 지금 내 메이크 파일에서 다음과 같습니다

모든 메이크 파일에서 mxmlc에와 compc의 명령
.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) 

이제 .deps 디렉토리에 적절하게 이름 .xml 파일을 생성 -link-보고 있습니다. 필자는 여전히 Embed 및 Script 지시문에 대한 파일을 검색해야하지만, 어려운 부분 (어떤 클래스가 포함되는지 결정)이 수행되었습니다. 각 단계마다 실제 파서를 사용할 수 있지만 grep, sed 및 cut은 주어진 파일에 대해 충분히 잘 작동합니다.

0

mxmlc는 매우 똑똑하고 종속성을 올바르게 처리하기 때문에 종속성 자체를 파악해야하는 사용자가 거의 없으므로 도구가 존재하지 않을 수도 있습니다.

내가 가져온 문장을 구문 분석하는 방법이 될 것 같아?

+0

단지 import 문만큼이나 단순한 경우 ... XML 네임 스페이스가 패키지로 설정되고 패키지의 클래스가 암시 적으로 패키지로 가져오고 패키지의 파일이 두 개의 소스 트리로 분할됩니다. – eswald