2017-11-27 4 views
0

그래서 나는 그 메소드가있는 클래스와 함께 메서드를 호출하기 시작하는 VCR과 비슷한 보석을 만들고 싶습니다. 줄 번호와 녹음을 멈추고 yml 파일이나 뭐라고 말하면됩니다. 이것은 실행의 UML 시퀀스 다이어그램 메타 데이터 설명입니다.시퀀스 다이어그램 생성기 루비 보석

더 이상 확장하면 인어 보석을 사용해 그림 UML 다이어그램을 실제로 내고 싶습니다.

이 reddit 포스트에서 설명 된 접근법을 취해서 기본적으로 일종의 식물 텍스트 다운 스트림을 구문 분석하기 위해 해시 배열을 저장하려고합니다. https://www.reddit.com/r/ruby/comments/11ns2l/does_a_uml_sequence_diagram_generation_gem_exist/

http://phrogz.net/ProgrammingRuby/ospace.html#tracingyourprogramsexecution

은 어쨌든, 마지막으로, 내 질문이 접근하는 더 나은 방법이 있나요 ...인가? 아니면 그냥 reddit에서 제안 된 아이디어를 따라야합니까?

+0

당신이 이미 가지고있는 해답은 본질적으로 제가 처음에 제안하는 것입니다. 사용할 수있는이 Kernel 메소드를 래핑하는 표준 라이브러리에는 [Object-Oriented API] (http://ruby-doc.org/core/TracePoint.html)도 있습니다. –

+0

최근에는 재미 있었지만, 사실은 [내 자신의 버전을 썼습니다] (https://github.com/tom-lord/search_warrant) 메소드 추적 프로그램입니다. 당신은 그것의 변형을 사용할 수 있지만, 표준 라이브러리 접근법은 아마도 더 나은 접근법 일 수 있습니다. 특히 C 메소드도 처리하므로 특히 그렇습니다. –

답변

2

가장 간단한 해결책은 식물 uml 파일을 생성하는 것입니다. Plant 파일은 XMI 파일보다 훨씬 간단하고 Plant는 많은 도구에 통합되어 있습니다.

대체 방법 일 수 있습니다. 예를 들어

plantUML

:

@startuml 
Alice -> Bob: Authentication Request 
Bob --> Alice: Authentication Response 
Alice -> Bob: Another authentication Request 
Alice <-- Bob: another authentication Response 
@enduml 

는 생산 :

enter image description here

0

ZemUML 지원 C 형 코드.

예를 들어, ZenUML.isAwesome() 다음 다이어그램을 생성합니다

enter image description here

당신의 메타 DSL이 동일한 구문을 다음 경우에는 직접 ZenUML와 통합 할 수 있습니다. JS 라이브러리는 npm 모듈로 게시됩니다.