마크다운 파싱...
지금은 망하고 없어진, 양재동에 있던 한 업체에서 정부과제를 할 때였다.
산출물을 점검하고 산출물에서 테스트 케이스를 도출하는 것을 가이드 하였다. 주요 코드 설명서였고 이 코드들에 대한 테스트 케이스 도출이었다.
테스트 케이스를 만들어야 하는 정부과제라 담당자는 진행을 하였다. 하지만
"많이 귀찮은 작업이네요... "
그 때에는 그냥 푸념이려니 했다. 모든 산출물은 MS Word로 작성이 되었고 이를 하나하나 보면서 분석을 해야 했기 때문이다.
그러고 얼마 후에 마크다운(markdown)이라는 것을 알게 되었다. 그 당시에는 HarooPad라는 애플리케이션을 사용하여 작성을 해 보았는데 웬만한 문서 양식은 어느 정도 이것으로 커버되겠다는 느낌이 들었다. 특히 코드관련 설명서를 작성할 때 많은 도움이 되겠다고 생각했다.
그러다가 마크다운으로 작성한 문서를 그냥 읽어들여 테스트 케이스를 만들어 주는 애플리케이션이 있다면 상당히 좋을 것 같다는 생각이 들었다. 이것이 테스트 케이스 설계도구의 시작이었다.
마크다운 문법에서 코드 부분은 ``` 로 둘러 쌓인 부분이다 마크다운 문서(텍스트 파일이다)를 파싱하다 ```만 찾아 코드를 읽어 들이면 좋지 않을 까.
지금은 이 기능은 없다. 여기에서 고백하지만, 현재 웹 버전(analyzingcontext.com)의 이전 버전(exe버전)에서는 나의 게으름 때문에 일단 코드를 입력받으면 앞과 뒤를 ``` 로 둘러 쌓도록 코딩한 부분이 있다. 엔진 부분을 손대기가 귀찮아서 그랬다.
당시 버그 투성이의 코드 분석 엔진을 만들었고 완벽하진 않지만 어느정도 마크다운 문서를 파싱하여 코드를 읽어 케이스를 만드는 버전까지 도달하였다. 당시 썼던 기법은 MC/DC는 아니었고 그냥 조건문의 경우의 수에 대한 '모든 조합'을 만든 것이었다. 조건문에 3개 이상 넘어가면 기능이 돌아가지 않았다.
코드를 github에 올려 공개하는게 어떠냐는 이야기도 가끔 들었지만, 솔직히 말하면 '창피하여' 못올려 놓았다. 자기 코드를 자신있게 공개하는 사람은 정말 대단한 사람이라고 생각한다.
진행을 못한 이유는 여러가지가 있는데, 일단 마크다운 이라는 양식이 모든 개발자들 사이에서 통용되는 것이 아니었다. 앞에서 언급한 양재동 업체도 MS Word에 길들여져 있어 마크다운에 대한 반발이 있었으며, 외부인인 내 입장에서는 이를 강제할 힘도 없었다.
또 하나의 문제점은 마크다운 에디터가 지원하는 마크다운 문법이 제각각인 것이다. 마크다운이 어느정도 공통적인 포멧을 가지고 있기는 하지만, 주석 기능 같은 것은 표준 기능이 아니기 때문에 에디터 마다 지원여부가 다르다. 처음에는 A라는 도구를 기준으로 잡았다가 나중에 나온 B라는 도구가 기능이 많고 더 좋아 보이는 경우 여간 곤란한 일이 아닐 수 없다.
2019년 2월 기준으로 나온 마크다운 도구들을 보면, 엄청나게 기능이 좋아졌다. 특히 자바 스크립트 라이브러리 기능의 지원으로 시퀀스 다이어그램이나 그래프(mermaid.js), 플로우챠트(flowchart.js)들을 별 고민 없이 문서에 삽입가능하게 되었다.
이를 가지고 이제 기술 문서 산출물을 만들고, 애플리케이션으로 이를 읽어들여 테스트 케이스를 만들 수 있는 아이디어도 이제 구체화가 가능할 것 같지 않을까?
나중에 시간이 되면 위 스크립트를 지원하는 파서를 만들어 보려 한다. 나중에 시간이 되면...