요즘 백수라 매일 집에서 놀다보니 VisualStudio를 실행시키기가 오히려 더 힘들어서 작업이 많이 늦어 졌습니다;;; 퇴직하면서 서류처리가 좀 많았고 요즘 취직관련해서 이리저리 알아보고 사람들 만나러 다니고 하느라 바쁜것도 있지만요;; 취직이 빨리 결정이 안되니 이래저래 스트레스군요;
우선 addin형태에서 패키지형태로 바뀌었습니다. Addin형태는 VS버전별로 설치를 해야 해서 VisualStudio 2008지원이 추가 되면서 Program Files밑에 하나만 설치하도록 패키지 형태로 변경되었습니다. 근데 VC랑 연동하는 부분을 vs2005와 vs2008을 별도의 dll로 만들어서 리플렉션으로 연동을 해서 리프레쉬속도가 좀 느려졌습니다;;
그리고 툴바를 못찾는 분들이 많으셔서 VisualAssist처럼 메인 메뉴에 메뉴를 추가하였습니다.
그리고 위 메뉴에 있는 내용들을 keyboard shortcut을 설정할 수 있도록 추가하였습니다.
그리고 BindCode를 자꾸 바꾸게 되서(아마 0.4에서 또 바뀔듯;) 번거로우실거 같아서 배포본에 포함하였습니다. 설치폴더에 있는 BindCode들을 직접 프로젝트에 연결해서 사용하시면 편할실것 같습니다.
Improve ReparseCurrentFile(for Navigate and Update List) to use thread
Add MenuBar?
change bind codes
안타깝게도 debug기능이 들어가지 않았습니다. 원래는 debug기능까지 추가하고 배포하려고 했는데 버그 수정된것들도 있는데 배포가 너무 늦어지는 것 같아서 먼저 배포했습니다.
debug기능이 WinUnit을 추가하면서 좀 문제가 생겼네요. WinUnit은 내부에서 Test를 관리하는 내용이 없고 밖에서 외부로 노출되어 있는 모든 함수를 실행하게끔 되어 있어서 아무래도 WinUnit만 따로 예외처리하는 형식으로 처리해야 할 것 같습니다.
그 외에는 오른쪽버튼 눌러서 팝업창 띄우는것 정도의 내용이 남았네요.
이정도로 해서 0.4를 배포하고..
그 다음은 CruiseControl.net지원이라던가. 아마 안될것 같지만 VisualStudio 2003지원을 좀 살펴본다던가 하게 될거 같네요. 패키지로 만들면 VisualStudio 2003이 될 줄 알았는데.. 안되는군요;; VisualAssist쪽을 보면 VS에 런칭하는 부분이 아예 따로 되어 있는것 같기도 합니다.
전체적으로 다운버그 같은 것들은 많이 수정되었습니다만. 문제가 있거나 필요하신 기능이 있으면 댓글로 달아주시기 바랍니다.
최근 VisualUnitTest++의 배포가 늦어지고 있었는데.. 머 노느라 바빠서-_- 가 주 원인입니다만..;;
프로젝트적으로는 Integration Package로 프로젝트 타입을 바꾸고 실시간 감시코드를 스레드로 바꾸면서 크래시가 잔뜩-_-나서 수정하느라 시간이 걸렸습니다. 실시간 감시에서 크래시 나는걸 수정하면서 실행중 크래시가 날 수 있는 부분들도 모두 수정했습니다. 일단 프로젝트 타입을 package로 변경하는건 끝났습니다.
Addin하고는 기본 접근이 달라서 꽤 복잡하군요. 오늘 VS Industry Partner등록도 했으니.. 이쪽은 배포하는 부분만 하면 되네요.. 쓰기도 힘든데 배포도 꽤 복잡하군요;;
일단 멀쩡한 프로젝트를 Package로 변경한거는 2008지원을 위해서 입니다. Addin프로젝트의 경우 배포를 각 버전별로 해야 해서 관리가 힘들어서 Package로 변경하면서 2008지원이 추가되었습니다. 아직 테스트는 안해봤지만 2003이나 2002도 될지도 모르겠습니다..생각으로는 그래도 얘네들은 안되지 않을까..하는 생각입니다만;;
WinUnit지원작업은 예전에 끝났고, 디버깅 지원작업은 좀 밀리고 있네요. 기본 사용형태를 툴바아이콘 형태에서 VisualAssist같은 메뉴가 생기는 방식으로 변경하면서 TreeView에도 팝업메뉴같은것들을 추가하고 있어서 디버깅작업이 좀 밀렸습니다. 사실 디버깅쪽도 구현은 복잡하지 않은데 각 프레임웍별로 바인딩 코드 일일히 작성해서 테스트하기가 귀찮아서;; 계속 우선순위가 밀리고 있습니다;;;;
작업을 하나씩 해서 순차적으로 배포해야 되는데... 하다보니 이것저것 다 건드려 버려서 배포가 늦어지네요;;;
아마 빠르면 다음달 초정도면 새버전이 배포될것 같습니다. 늦으면 뭐 다음달 말이 될지도 모르지만요;;;;
사실 이내용들은 배포할때 적을려고 했던 내용이고 원래는 Package쪽 기술링크를 걸려고 글쓰기를 눌렀는데 혹시 다음 버전을 기다리시는분들이 있을까봐 간단하게 소식을 적었습니다.
처음에 UI모듈을 저런식으로 만들어 볼까? 라고 생각했다가 머 이리저리 생각해보니 별로 일것 같아서 신경끄고 있었는데..
오늘 문득 든 생각이... embed script용 툴을 만들면 괜찮겠다는 생각이 들었습니다.
lua를 쓰면서 임베딩된 상태에서 사용이 많이 불편했던 부분들이
* 브레이크 포인트를 걸거나 Step기능을 쓰기 힘들다. * 변수값을 실시간으로 확인하기 힘들다.(print문으로 변수값을 출력하게 lua를 바꿔서 reload해서 사용하는 방식으로 사용했지만) * 편집하고 저장한 뒤에 reload를 호출해줘야 한다.(실제로 개발용 버전에서는 lua파일을 함수콜 할 때마다 다시 로딩되게 해서 사용해서 실제로 reload가 불편하지는 않았지만) * 보통 vs에서 편집하는데 칼라링이 안된다.(이거야 전용 ide를 사용하면 되긴 하지만 vs와 전환해가며 사용하기는 꽤 불편해서) * 인텔리 센스가 지원되지 않는다.
뭐 대충 이정도 내용이군요. 사실 bind도 귀찮긴 하지만 이건 툴적인 부분에서 어쩌기는 힘든 내용이니까;(클래스 구조를 파싱해서 bind코드를 자동으로 생성해주는 정도는 가능하겠지만요)
위의 내용중에서 vs addin으로 만들게 되면 다른거는 대충 될 거 같은데 인텔리센스는 힘들겠군요. visual assist처럼 vs기능을 사용하지 않고 별도로 띄워버리면 가능할 것 같기도 하지만 말입니다;
인텔리센스가 불편해도 addin으로 만들면 메인 프로젝트와 같은 IDE에서 볼 수 있다는 장점이 있죠. 전환하는건 둘째 치고 debuging의 경우는 이쪽 IDE에서 cpp쪽에 걸렸다가 이쪽 IDE에서 스크립트에 디버깅 걸렸다가 하면 디버깅 하기 힘들테니까..
나중에나중에나중에나중에 스크립트를 많이 써야 하는 상황이 되서 위의 기능들없이 개발하기가 너무 힘들어지는 상황이 되면 한번 만들어봐야겠습니다..
흐음.. UI모듈이나 새로 구상해볼까... 하고 생각을 시작했다가 UI모듈의 이벤트 핸들링을 스크립트랑 연동시키는 내용생각하다가 여기까지 왔군요.;; 너무 멀리 왔습니다.. 후우~ -_-)y=~
lua가 별로 맘에 안들어서 다음엔 squirrel이나 써볼까 하고...이것도 살펴보고 있었는데-ㅅ-; 할일이 없으니 이리저리 딴 생각만 하게 되네요ㅎㅎ
요즘 휴가라 집에서 졸리면 자고 눈떠지면 깨고 일어나면 빈둥거리고;; 하면서 틈틈히 작업이 진행되었습니다;
처음 만들기 시작할 때는 GuiRunner정도로 간단히 생각하고 시작했는데 꽤 시간이 걸려버렸습니다. 한달 반정도가 걸렸네요.
원래 UnitTest++전용으로 만들다가 CppUnitLite, CppUnitLite2지원을 넣으면서 여러 프레임웍을 지원하게 구조변경이 되면서 작업이 꽤 딜레이 되었습니다; 이게 다 레이옷때문입니다;;;;
게다가 지원 프레임웍별 샘플 및 바인딩 소스 작업이 Library의 코드를 바꿔야 하는것들도 있어서 시간이 꽤 걸렸는데. 이것도 사실 UnitTest++용은 테스트를 해야 하니 당연히; 작업이 다 되어있는 상태였는데. CppUnitLite, CppUnitLite2용 샘플 및 바인딩 소스 작업 & Library수정 코드 작성..때문에 꽤 딜레이 되었습니다. 이게 다 레이옷때문입니다;;;;
멀티 프레임웍을 지원하게끔 되었지만 이 시리즈들 말고 다른것들(CppUnit, CxxTest, boost::UnitTest등)은 작업이 불가 할 것 같습니다. 다른것들의 경우는 함수를 작성해서 등록을 하는 형태라 파싱을 해볼려고 했더니 너무 복잡해지더군요-_- 제가 쓸것도 아닌데 굳이 저 복잡한 내용을 손 댈 생각은 없습니다;;;
가장! 중요하다고 생각하고 있던 메인아이콘-_-! 작업을 버리면서 배포일정이 많이 빨라졌습니다;;
PS. Addin이다 보니 버그가 있어서 죽는경우는 VisualStudio가 뻗어버립니다;; 참고로 저는 TDD를 안하므로 사용자분들의 상세한-_- 버그 리포팅을 기대합니다;;
요즘 UnitTest++용 VisualStudioAddin을 만들고 있는중입니다. 전에도 말했지만 UnitTest는 별로 쓰지도 않으면서 쓸데없는데 시간쓰고 있는 쑥갓군입니다;;
이름을 UnitTestIDE로 할지 VisualUnitTest++로 할지 고민중입니다;;; 개인적으로는 UnitTestIDE는 ++이 붙일데가 마땅치 않고 약자쓰기도 VUT가 조금 더 나은것 같습니다; 누가 좀 골라주삼;;
어쨋건 Addin프로그래밍도 처음해보는데다가 C#으로 만들고 있는지라 삽질이 이만저만이 아닙니다. C#은 첨 나왔을때 공부용으로 좀 보고 제대로 해보기는 처음이네요.
익숙치 않은 .NET 라이브러리 때문에 몇번이나 확 버리고 C++로 다시 시작할까...하다가 C++은 COM접근할때의 그 번거로움 때문에 꾿꾿히 C#으로 버티고 있는중입니다;;
게다가 C++로 만들면 설정저장하는 용도로 XML쓰려면 원래 쓰는건 업무용이니까 안되고 새로 만들려니 그게 더귀찮아서 사실은 XML때문에 C#쓰고 있습니다-_-;;
그래도 확실히 툴프로그램은 C#이 간편하기는 합니다; 하지만 C++테스트를 실행시켜야 되서 결국은 사용자의 Test DLL을 불러다가 Test를 실행시켜주는 실행용 C++ DLL이 하나 더 필요해져 버렸습니다.(귀찮아라;;;) 결국은 .Addin파일과 설정파일(이건 배포는 안해도 되는 파일이지만)을 포함해서 파일 4개가 되겠네요.
위에 살짝 언급했지만 외부에서 실행시키는거라 DLL로 Test프로젝트를 만드셔야 합니다; DLL이 아닌경우도 Navigate는 지원할 예정입니다; 테스트 프로젝트 유무판단이 Linker Option으로 해서 StaticLib는 지원안될듯합니다; 혹시 꼭 StaticLib가 필요하신분이 있으시다면 고민해보겠습니다-ㅅ-;;
일단은 다이얼로그 띄우고 VisualStudio에 연결하고 소스 파싱해서 Suite와 Test리스트 만들고 툴팁으로 파일명이랑 라인보여주고 더블클릭해서 소스로 가는 정도까지는 작업이 되었고, 프로젝트나 파일이 새로 추가된다거나 하는 이벤트 처리들을 하고 있습니다. 실시간으로 편집되는것들에 대한 상황들을 처리하려니 처리할 상황이 꽤 많네요.. 머 파일 편집하다말고 저장안하고 닫아-_-버린다던가;;
그 다음은 커서위치 추적해서 리스트에서 Navigate해주는 기능이랑 실행용 DLL만들어서 실제 실행시키는 부분, 아이콘 붙이기-_-;;, 기본 설정 저장, 솔루션별 체크항목들 저장... 정도가 기능적으로는 남은 내용들이네요;; 써놓고 나니 아직 한참남았네요-ㅅ-;;;
그 외에는 설치프로젝트 만들고, Project Wizard만들고(이부분이 젤 삽질할거 같은 부분-_-)등등이 기능외;; 남은 부분이네요;
목표는 연내배포-_-;;; 이지만 또 어떻게 될지 모르겠습니다;;;;; 작업이 순조롭게 지연되면;; 내년 1월에나 나올지도;;;;
뭐 GuiRunner과 마찬가지로 소스는 공개예정입니다. 다행히 GuiRunner는 생각과는 달리 아무도 개선요청같은 걸 안해주셔서(아무도 안쓰는건가-_-;;;;) 안심하고 대충만들고 있습니다-_-;
참고로 위에 열거된 내용외의 필요하신 사항 미리 말씀해주시면 만드는김에 같이 만들지도 모릅니다;(장담은 못합니다-_-) 배포해버리고 나면 귀찮아서 다시 안열어 볼지도-_-;;;
사실 저희팀이 UnitTest를 별로 안쓰는데다가 옆에 서버팀은 boost의 UnitTest를 쓰고 있어서 개선요청 받을데가 없습니다;; 저 옆에 UnitTest많이 쓰는 친한 회사는 CppUnitLite2를 쓰고 있고;;;;