VS TFS 2010 사용편 - SourceSafe? 버려~

Team Foundation Server 2010. 5. 10. 09:00 Posted by 알 수 없는 사용자
 

SourceSafe 보다 좋은 VS TFS 2010  3부작~ 1

 

팀장 : "XX ~"

: "~(룰루 랄라~)"

팀장 : "현재 쓰고 있는 VS 2008 하고 VS 2005 SourceSafe 있는거 사용하고, 신규부터 VS TFS 2010 사용하죠."

: "? 그거 전부 VS TFS 올리는 아닌가용????"

팀장: "? 뭐야 VS 2008 있는거? VS TFS 2010으로 연결해서 사용할 있어? 그리고 TFS 2010 에서 소스 관리하는거 새로 배워야 하는거 아냐?"

: "??? 새로 배워요? SourceSafe 사용했던 처럼 체크 / 아웃 하면 돼요~"

팀장: "새로 안배워도 ? 정말? 그리고 VS 2008 있는거 SourceSafe 말고 VS TFS 2010 써도 ?"

: "~~~ ~~ 얼씬 안정빵으로 소스 관리할 수있어요~ 이번에도 저만 믿으세요~ ㅋㅋㅋㅋ(이번엔 팀장에게 저녁 사달라 할까? 마눌님 친정갔는데 ㅋㅋㅋ)"

팀장 : " 그래? 해봐"( 이번에도 내기 해봐? 그런데 웃음은 뭐지??? 불안해 확실할 해야겠당...)

 

이제 드뎌 사용편입니다. 3부작으로 천천히 하죠 ㅎㅎㅎ

1편 : VSS 에서 VS TFS 2010으로 업그레이드 준비 작업하기
 

사용편에서는 Visual SourceSafe 2005 사용하는 사용자 분들을 위해 앞에서 설치, 구성을 상태에서 진행하셔야 합니다. VS TFS 2010 우선 기존의 사용하는 방법 그대로 사용하면서 추가 기능을 알아보는게 좋을 같습니다.

 

~ Visual SourceSafe 2005(VSS 2005) 업그레이드 작전(?) 입니다.

 

VSS 2005 이라고 불리는 녀석이 회사 프로젝트의 모든 소스를 관리하는 녀석으로 20 정도가 있다고 가정합니다.~ (가정 VS 2005 하고 2008 같이 사용하는 회사도 있습니다. ^^)

 

회사는( 백수입니다 .) VS 2005 부터 VS 2008 까지 프로젝트로 진행하고 있으며 개발자들은 모두 두개의 VS 설치하고 있다고 가정합니다. 이런 상황에서 VS TFS 2010 사용할 있으냐? 사용 가능합니다. 처음 부터 VS 2010을 사용하면 좋지만… 여러가지 이유로 당분간 VS 2005, 2008 사용해야 하는 어쩔수 없는 상황도 있을 있습니다.

 

VS TFS 2010 만들어낸 Microsoft 에서는 이런 상황에 대한 지원은 기본이라 수있습니다.( VS 2003 번외편으로 하죠 ㅎㅎ 아직 완전하지는 않은듯 합니다 ^^ 제가 테스트 하구요^^)

 

이제 본론으로 넘어와서 TFS 2010 이란 녀석을 활용해야 하는데.. 솔직히 기존 프로젝트를 VS 2010으로 업그레이드 하는 것이 젤루 좋지만…. 앞에서 설명한 여러가지 이유중에 회사마다 돈을 내고 사용하는 VS 추가 콤포넌트들이 있을 경우에는 바로 업그레이드 하기에는 조금 위험하기 때문에.. 그냥 VS 기존 버전을 사용하는 경우도 있습니다. 그렇다면, 정말 연결을 하려면 어떻게 해야 하는가??

기존 버전에서 VS TFS 2010으로 연결하기 위해서는 다음 같은 파일들을 다운로드 받아서 설치만 하면 됩니다.

 

VS 2005 SP1 호환성 업데이트

VS 2008 SP1 호환성 업데이트

 

~ 2개만 있으면.. 바로 사용할 있다는 것입니다.(한글판 다운로드입니다.^^)

 

그런데~~ 여기서 잠깐 주의 하실 것이 있습니다.

 

VS 2005에서는 최소한 Visual Studio Team System 제품군이여야 한다는 전제조건이 있습니다. VS 2008 Professional 에서 Team Explorer 2008 설치해서 접속해도 되지만… VS 2005 약간 부끄러움을 타는건지(?) Team System 계열만 가능합니다.

 

하나. 바로 Service Pack관련 부분으로 어느 회사에서는 Service Pack1 설치하지 않는 경우도 있습니다. Service Pack1 닷넷은 아닙니다. 개발자분들이 오해하시는 것중에 하나가 .NET 서비스팩 업그레이드 했으니 VS 업그레이드 된거 아냐? 하시는데.. 아닙니다.

그래서 절대 주의 하셔야 합니다.

 

Visual SourceSafe 2005 에서 Visual Studio Team Foundation Server 2010 으로 가기 위한 작업

 

Visual Studio 2005 경우

 - Visual Studio Team System 제품군인지 확인

 - Visual Studio Team Explorer 2005 설치

 - Visual Studio 2005 Service Pack 1 설치

 

Visual Studio2008 경우

 - Visual Studio Team Explorer 2008 설치

 - Visual Studio 2008 Service Pack 1 설치

 

이런 순서로 진행하셔야 합니다.

 

Service Pack 1 설치 후에 Team Explorer 설치하시면.. 다시 Service Pack 1 설치하셔야 합니다.

그런 이제 VS TFS 2010 접속할 있는 환경으로 전환이 입니다.

 

그런데… 회사 개발팀들.. 마디 합니다. TFS 2010으로 가야 하는데????

~ 소주 한잔 하시죠?? 하고 이야기 하면.. 소주값 만이 들어갑니다.(한달 월급이 얼마인데 . 잘못 카드값이 나오면 마눌님에게 둑는데 ㅠㅠ)

 

그래서 다음과 같이 정리 했습니다.

 

구분

Visual Source Safe 2005

Visual Studio Team Foundation Server

저장소

파일 형식

MS SQL Server

보안

공유폴더 접근권한 사용

소스에 직접 접근 불가

편의성(사용자 계정)

VSS 에서 직접 관리

Windows 계정 사용

성능

파일 I/O

Proxy 서버로 성능 향상가능

요구사항 관리

불가

설계부터 요구사항과 연결

문서 형상관리

소스만 가능

가능(SharePoint Services)

보고서

직접 작성

가능(SQL Server Reporting 또는 엑셀)

백업 및 복구

수동

Database 백업 / 복구

개발방법 지원

지원불가

Agile 또는 CMMI 지원

기술지원

2005버전 이후 계획 없음

2011 까지 가능

지속적인 업그레이드

기술 지원 가능

 

ㅎㅎㅎ .. 이런 이유로 사용하면 좋다는 것인데요.. 일단 VSS 2005 아니 VSS 오랫 동안 사용해보신 분들이라면.. 다들 VSS 때문에 약속이나 소스 원복으로 인한 철야 작업들이 기억나실 겁니다.

 

VS TFS SQL Server 사용하기 때문에 DB 백업/복구만 잘되어 있다면 언제든지 복구가 가능하다는 것이죠. SQL 이긴 하지만, Database 장점과 Windows 계정의 활용등등.. 여러 가지 장점이 있다는 것입니다. 앞에서 정리한 것으로 개발팀원들과 이야기가 끝났다면… 이제 사용해야 겠죠?

 

.. 바로 Service Pack 1 설치 다음이 사용자 계정과 소스를 TFS 2010으로 이전 작업입니다.

사용자 계정과 소스 이전 작업은 다음에~~ Soon 입니다~


 

팀장에게 TFS 구성보여주고 얻어먹기 ~.

 

팀장 : "TFS 구성 어렵자나?"

: "쉬운데요.."

팀장 : " ? 거짓말? 설치문서봐봐"

: "VSS 대신 쓰실건데 보세요~ 정말 마우스 몇번으로 끝남다~ ㅋㅋ"

팀장 : " 이거봐라? (이누무가 좋아 ㅋㅋ 점심내기해야징 아싸~)진짜? 그럼 오늘 점심 산다~ (ㅋㅋ 설치문서에도 계정이며, 어쩌구 하던데 ㅋㅋ) 아니면 네가 ~"

: "ㅋㅋ OK~(아싸 점심값 벌었다~~~요즘 점심값 6000원인뎅 ㅋㅋㅋ)"

 

. 이제 그럼 앞의 대화처럼 TFS 2010 구성편을 알아보겠습니다. 정말 쉽냐?

정말 쉽습니다. 그래야.. 팀장에게 점섬을 얻어 먹을수 있겠죠? ^_^

 

그럼 설치 전에 Visual Studio 2010 구성을 조금 보도록 하겠습니다.

 

구성 방식

용도

Basic

기본적인 구성요소를 이용하여 팀 프로젝트에 꼭 필요한 소스제어 기능을 사용할 수있으며, 작업항목추적을 통하여 요구사항 정의등을 할 수 있습니다.

Standard Single Server

하나의 서버에 기능 구성요소를 모두 설치하고 협업을 위한 SharePoint, 보고서를 사용하기 위하여 SQL Reporting Services등을 구성합니다.

Advanced

하나 이상의 서버에서 SQL SharePoint 등을 설치하고 구성합니다.

Application – Tier Only

Visual Studio Team Foundation Server 2010 응용 프로그램 개층만 구성합니다.

Upgrade

기존의 Visual Studio Team Foundation Server 업그레이를 구성합니다.

 

5가지로 구성되어 있습니다. 여기서 Visual SourceSafe 구성할 경우 Basic으로 구성하면 됩니다. 기본으로 구성하면 앞에서 팀장과 이야기한 얻어먹기 내기를 이길 있는 것입니다.

 

바로 따지지도 묻지도 않고, SQL SharePoint 걱정없이 구성을 마무리 합니다.

 

앞에서 설치를 완료 했다면. 설치 마지막에 "Lunch Team Foundation Server configuration Tool"  보셨을 것입니다. 거기서 바로 "Configure" 하면 다음과 같은 화면이 나타납니다.

 

 

여기서 왼쪽 메뉴의 "Basic" 선택합니다.

 

그럼 옆에 설명이 나오는데 그것은 영어이므로 패스 합니다.( 영어 울렁증~ .)

 

"Basic" 선택하고 영어를 한번 읽고 바로 아래 "Start Wizard" 선택해서 구성을 시작합니다.

환영한다고 하면서 이제 기본 구성 마법사를 시작하려 합니다. 영어는 언제나 그렇듯.. 영어 울렁증으로 특별한 내용이나 주의 사항이 없으면 패스 하겠습니다.(한글은 언제쯤일가 .)

"Next" 선택하고 다음으로 넘어갑니다.

 

? SQL 묻는 질문을 하는데요.. 여기서 겁먹지 마시고 "Next" 하시면 됩니다. 일반적으로 SQL 없는 기업의 경우 Visual SourceSafe 사용하는 회사라면 일단 맛보기로 SQL Express 사용하는 것도 좋습니다. ^.^ 만약 있다면…..

 

두번째 "Use an existing SQL Server Instance" 선택해서 SQL 선택할 있습니다.

 

그렇지만. 여기서 첫번째를 그냥 선택합니다. 첫번째를 선택하면 SQL Express 자기가 알아서 설치를 합니다. 신경 쓸것 없다는….. 것입니다.

 

 

.. 보니.바로 확인 하라는 화면이 표시됩니다. 별로 특별한 없이 마우스 몇번 클릭 했드만 기본 구성 하려고 하니 검토해 달라는 화면입니다. 정말 한것도 없는데 벌써 검토하라니..

설치 문서에 있는 많은 계정과 SharePoint 같은 것은 어디갔을까?

 

(~~ 팀장 여기서 얼굴에서 당했다. 점심값 하는 모습이 떠오릅니다. 푸헐~ 아싸~)

 

팀장 제발 바로 아래 메뉴에서 Checks에서 걸려라 하는 마음이 간절할 것입니다.

 

하지만. 여기서 "Next" 또는 "Verify" 선택을 합니다. 겁먹지 마십시요.

설치전 하드웨어 요구사항과 IIS,.NET 무사히 설치 했다면 절대 문제 생기지 않습니다.

 

모두 문제 없다는 화면이 드디어 표시됩니다.

(이화면에서 Warning 화면은 제가 일부러 본것입니다 ㅋㅋ 변명은 .)

 

모두 문제 없다면 "Configure" 선택합니다. 그럼 자기가 알아서 합니다.

 

계정? SQL 지가 합니다.(SQL 설치 때문에 조금 시간이 걸릴 있습니다. 너무 걱정하지 마십시요.^^)

 

 

모두 설치 완료 됐습니다. 이제 "Next" 하면 끝입니다.

 

 

"Close" 하는 동시에 팀장님을 한번 보시면서, "오늘 점심은 쟁반짜장에 탕수육입니다." 라는 멘트를 한번 날려 주시면 됩니다.

 

그럼 이제 TFS 2010에서는 설정 됐어~~ 하면서 다음의 화면이 표시됩니다.

 

 

ㅎㅎ 이제 모두 끝난 것입니다. 한거 없죠?? 이제 팀장님이 사주는 점심 먹으로 가시면 됩니다.

 

그럼 이제 다음은 이것을 사용하는 방법을 알아 보겠습니다. ^.^


VS TFS 2010 설치편 - 설치 시작

Team Foundation Server 2010. 5. 4. 09:00 Posted by 알 수 없는 사용자

 

팀장에게 VS TFS 설치보여주기 - VS TFS이게 쉽습다~.

 

드디어 사전 준비사항이 끝나고.. 설치를 진행합니다. 설치는 정말 단순합니다.

 

설치 DVD DVD-ROM 넣습니다. 요즘에는 CD 아니라 DVD 많이 나오네요.. ^.^

DVD 폴더로 이동합니다. 여기에는.. 몇개의 설치 폴더가 있습니다. 설치 파일은 Setup

어디에 있는지 궁금하신 분들은.. 잠시 참아 주십시요.^^

 

 

이게 설치 DVD 내용입니다.

 

"TFSInstall" 파일은 설치 설명서입니다. 아직 영문이라 영어로 나오는다는…(한글은 언제??)

그럼 폴더를 조금 설명해 드리면..

 

Client.upd ->VS2008 Team Explorer설치 지원파일

Team Explorer -> Team Explorer 설치 폴더

TFS-X64 -> Team Foundation Server 2010 설치 파일 64bit

TFS-X32 -> Team Foundation Server 2010 설치 파일 32bit

 

이렇게 4개의 폴더로 구분했습니다.

 

설치할 OS bit 확인하시고 그에 맞는 설치 폴더로 이동하십시요.

 

Windows Server 2008 R2이므로.. TFS-x64 이동합니다.

 

여기 드뎌 설치파일이 있습니다.(설마 여기 이것을 찾기 위하여 검색으로 찾지는?? ㅎㅎㅎ)

 

그럼 여기서 "Setup" 선택해서 설치를 시작합니다. (따쁘~~ 클릭을 하는거죵 ㅎㅎㅎ)

그럼 설치하기 위한 설치 콤포넌트를 읽기 시작해서 다음 화면이 표시됩니다.

 

 

끝난 다음 "Next" 선택합니다.

 

 

설치 라이선스 동의하시고~ "Next" 쏘세요~

다음 . 이제 중요합니다. ? 설치할 기능을 선택하기 때문입니다.

 

 

설치할 기능을 선택하는 것입니다.

 

Team Foundation Server - TFS 주요 기능 구성요소

Team Foundation Server Proxy - TFS 프락시 서버

Team Foundation Build Service - TFS 빌드 서비스

 

세개의 구성요소 중에 첫번째는 설치해야 겠죠??

그럼 나머지 2개는.. 필요에 따라 설치하실  있습니다.

 

간단히 요약해 드리면

2번째 - 사용자 많아지만 추가로 설치해서 Proxy서버를 중간에 두는 것입니다. 사용자가 많아서 서버 접속이 원할하지 않을 사용하는 .

3번째 - 빌드 서비스로 자동으로 소스 코드를 빌드하는 기능입니다. 이것도 필요하면 설치하시면 됩니다.

 

여기서는 TFS 주요 기능 기능 구송요소와 TFS 빌드 서비스를 설치하겠습니다.

TFS 빌드는.. 막내 꼬맹이가 일을 했는지 결과를 확인하는데 도움이 되기 때문이라고 팀장에게 이야기 합니다.  ^.^

 

그럼 2 선택하고 "install" 선택합니다.

 

 

그럼 설치를 진행하느데.. 여기서 잠깐.

 

Windows Server 2003이라면. Windows Installer 4.5 설치하기 때문에 여기서 리부팅이 한번 이루어집니다.

Windows Server 2003 , 2008 에서는 .NET Framework 4.0 설치하고 다음 리부팅을 다시 한번 합니다.

 

한번 정도 리부팅이 이루어 지는데요.. ^^ 이게 싫으시면.. .NET 4.0 먼저 설치하시는 것도 좋습니다.^^ 다시 부팅하는 횟수를 줄이러면 Windows Server 2008 이상을 권장합니다. ^___^ ㅎㅎ

 

설치를 완료하고 나면..

 

설치가 완료 되면 "Lunch Team Foundation Server configuration Tool" 체크되어 있어서

"Configure" 버튼이 활성화 되어 있습니다. 이제 "Configure" 선택하도록 하겠습니다.

 

이것을 선택하면 환경 설정을 하게 됩니다. 환경 설정은 Soon 입니다요.~~

 

ㅎㅎ 오늘은 여기까지 설치만 했습니다. 설치?? 쉽죠잉~~

팀장님께 설치 보세요~ DVD 넣고 설치하니 아무 문제 없이 설치 되자나요~

VS 2008 처럼.. 설치전에 뭔가 복잡한 안해두 돼죠? 글구 64bit 지원되고~ 어떠세요??

설치 관련된 말은 이제 할말이 없으시죠??

 

ㅎㅎㅎㅎ

안녕하세요. VSTS 2010 공식 팀에서 Twitter 를 시작했습니다. Twitter 를 통해 차마 시간이 없어 정리하지 못한 정보나 알아두면 좋은 팁과 정보 등을 단문 메시지로 여러분들에게 전달해 드릴 예정입니다.

차세대 플랫폼인 Visual Studio / Team System 2010 등 관심 있는 분들의 많은 Following 을 부탁 드립니다.

http://twitter.com/vsts2010

   

 

Querying the CompositionContainer
 
CompositionContainer 의 Exported 구성 요소를 취득하기 위해서는 컨테이너에 하나의 구성 요소만이 존재해야 합니다. 쿼리(Query) 를 통해 이러한 객체들이 여러 개 존재할 경우 MEF 는 예외를 발생하게 됩니다.
 
바로 아래와 같은 경우이죠.
l 하나의 인스턴스를 요청할 때, 인스턴스를 찾지 못했을 경우
l 하나의 인스턴스를 요청할 때, 인스턴스가 여러 개일 경우
 
GetExportedObject
 
일반적으로 ExportAttribute 에 인자가 전달되지 않은 경우는 클래스의 타입이 키 값이 되어, 아래와 같이 구성 요소를 취득할 수 있습니다.
 
class Program
{
        static void Main(string[] args)
        {
               var container = new CompositionContainer(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
              
               var export = container.GetExportedObject<Export1>();
               export.Say();
 
               Console.ReadKey();
        }
}
 
[Export]
class Export1
{
        public void Say()
        {
               Console.WriteLine("Export1 Say..");
        }
}
 
 
만약, ExportAttribute 에 Contract Name 이 선언이 될 경우는 클래스의 타입 정보와 Contract Name 이 일치해야 구성요소를 취득할 수 있습니다.
 
class Program
{
        static void Main(string[] args)
        {
               var container = new CompositionContainer(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
              
               var export = container.GetExportedObject<Export2>("export2");
               export.Say();
 
               Console.ReadKey();
        }
}
 
[Export("export2")]
public class Export2
{
        public void Say()
        {
               Console.WriteLine("Export2 Say..");
        }
}
 
 
GetExport
 
만약 여러 개의 구성 요소의 인스턴스가 필요하다면 GetExport 메서드를 통해 Export 의 구성 정보를 가져오면 됩니다.
 
var exports = container.GetExport<Export1>();
exports.GetExportedObject().Say();
 
필요하다면 ExportAttribute 의 Contract Name 으로 질의(Query) 할 수 있습니다.
 
var exports = container.GetExport<Export2>("export2");
exports.GetExportedObject().Say();
 
아쉽게도 MEF Preview 4 까지 지원하던 C# 3.0 의 Expression 을 통해 질의하는 방법은 MEF Preview 5 이후 없어진 것이 아쉽네요.
 
GetExportedObjectOrDefault
 
일반적으로 MEF 에서는 질의(Query) 결과가 없을 경우 예외를 발생하게 되는데, GetExportedObjectOrDefault 메서드를 통해 결과가 없을 경우 Null 값으로 대체할 수 있습니다.
 
var obj = container.GetExportedObjectOrDefault<Export1>("A");
if( obj != null )
        obj.Say();
 
 

'Managed Extensibility Framework' 카테고리의 다른 글

MEF 는 Generic Type 을 지원하지 않는다!  (0) 2010.01.29
MEF Preview 6 공개  (0) 2009.07.20
[MEF] 9. Recomposition  (1) 2009.04.19
[MEF] 8. Strongly Typed Metadata  (0) 2009.04.16
[MEF] 7. Exports and Metadata  (0) 2009.04.16
Visual Studio Team System 2010 Beta 1 이 다가오는 월요일(2009-05-18) 에 MSDN 을 통해 공개가 되고 다운로드 할 수 있다고 합니다. 단, 일반인들에게는 20일에 다운로드가 가능하다고 합니다.
 
 
 
Visual Studio Platform 팀에서 개발 리드를 담당하고 있는 Pedro Silva 씨는 블로그에 이번 Beta 1 에는 Visual Studio SDK 도 포함이 된다고 합니다. SDK 도 포함이 된 것으로 추정하면 대부분의 Visual Studio 2010 의 기능은 이전 버전보다 완성도가 상당히 높아졌으리라 생각합니다. 이전 버전에서는 Visual Studio 2010 이 이전 버전과의 비호환적인 부분이 많았는데 어떻게 변했을지 더욱 궁금해지네요.
 
Visual Studio 2010 에 대한 공식 Product 는 여기 에서 참고하시면 됩니다.
 
References
 
 


지난 번 포스팅에서 말씀 드렸던 것처럼 Visual Studio Team System 2010에서 이루어진 Code Analysis 기능 개선에 대해서 더 깊게 다뤄 보겠습니다. 그 첫 번째로 새롭게 추가된 Rule Sets 개념에 대해서 알아보도록 하겠습니다.


Visual Studio 2005, 2008에서의 코드 분석 설정

Visual Studio의 코드 분석 시스템에는 약 200개 정도의 규칙이 있습니다. 하지만, 사실 이 규칙들을 모두 준수를 해야 하는 것은 아닙니다. 모든 규칙이 나름의 이유와 정당성을 갖고 있다고 해도, 프로젝트의 성격에 따라, 모듈의 성격에 따라서 꼭 지켜야 할 규칙, 그렇지 않은 규칙, 심지어는 어쩔 수 없이 위반해야 하는 규칙도 있을 수 있습니다.

그래서 코드 리뷰를 할 때, 대부분의 경우 모든 규칙을 다 검사하지는 않습니다. 각각 케이스 바이 케이스로 규칙을 적절하게 조절하게 됩니다.

Visual Studio Team System 2005와 2008 버전에서는, 이런 설정을 Visual Studio Project Configuration에서 각 프로젝트 별로 할 수가 있습니다.

이 규칙 설정은 프로젝트 파일(.vbproj 혹은 .csproj)에 CodeAnalysisRules라는 Property 이름으로 아래와 같이 저장되게 됩니다. 내용을 보면 아시겠지만, “-“ 기호와 규칙 ID를 붙여 놓은 모양으로 되어있습니다. 즉, 거기에 열거된 규칙 ID를 Analysis Rules에서 빼는 형태로 저장이 되는 것입니다. 아래 샘플은 그래서 이 프로젝트는 코드 리뷰를 할 때에 Design Rule의 CA1000번 규칙을 검사하지 않는다라는 의미가 됩니다.

<CodeAnalysisRules>-Microsoft.Design#CA1000</CodeAnalysisRules>

이런 형태로 Visual Studio 프로젝트마다 다른 규칙을 적용할 수 있다는 것은 대단히 유연한 디자인이긴 하지만, 많은 수의 Visual Studio Project가 존재한다면, 관리가 참으로 어렵습니다. 그래서 예전에 Visual Studio Team System 2005 를 사용했던 프로젝트에서 전체 Visual Studio 프로젝트의 분석 규칙들을 통일하기 위해서, 개별 개발자들에게 위임하지 않고 제가 직접 모든 프로젝트를 텍스트 에디터로 열어서 저 부분만 Copy & Paste로 넣어서 Check-In하는 엄청난 단순 반복 작업을 한 적도 있습니다.

 

Visual Studio Team System 2010의 Rule Sets Feature

그래서 새롭게 출시될 Visual Studio Team System 2010에서는 Rule Sets라는 개념이 도입되었습니다. 이 Rule Sets 기능은 이름에서도 알 수 있듯이 Rule들을 미리 정해진 Set으로 관리할 수 있는 기능입니다. 이제 Visual Studio 프로젝트 별로 Rule을 하나 하나 빼는 수고를 할 필요가 없이 Visual Studio 프로젝트에 Rule Set을 지정하는 것으로 Code analysis를 커스터마이징할 수 있게 된 것입니다. 아래 그림에서 볼 수 있듯이, 하나 이상의 Rule Set을 선택하는 것도 가능합니다. (가장 아래의 Choose Multiple Rule sets를 선택하면 됩니다.)


Visual Studio Solution 전체에 Rule Set을 적용하는 것도 가능합니다. Solution Property에서 아래와 같이 설정할 수 있습니다.

 

위 그림에서 보시는 것처럼 마이크로소프트는 기본적으로 7개의 기본 Rule Set을 제공합니다. 이 기본 Rule Set의 목록은 다음과 같습니다.

  • Microsoft All Rules – 전체 Rule이 모두 포함된 Rule Set입니다.
  • Microsoft Basic Correctness Rules – 로직 에러와 자주 저지르는 실수를 예방하는 규칙들로 이루어진 Rule Set입니다.
  • Microsoft Basic Design Guideline Rules – Framework API 작성 상의 Best Practice에 집중된 Rule Set입니다.
  • Microsoft Extended Correctness Rules – Basic Correctness Rules를 확장하여, COM Interop이나 Mobile Application에도 사용 가능하도록 만들어진 Rule Set입니다.
  • Microsoft Extended Design Guideline Rules – Basic Design Guideline Rules를 확장해서, 사용성이나 유지 보수성도 체크할 수 있도록 만들어진 Rule Set입니다.
  • Microsoft Globalization Rules – Application의 Globalization에 있어서 문제가 있는지 검증하는데 집중된 Rule Set입니다.
  • Microsoft Minimum Recommended Rules - MS가 제안하는 최소한의 Rule Set입니다. 50개 정도의 규칙으로 이루어져 있습니다. 다른 대부분의 Rule Set들이 이 Rule Set을 포함하고 있습니다.
  • Microsoft Security Rules – 이름 그대로 보안에 집중된 Rule Set으로, 모든 Security 관련 규칙들이 모두 포함되어 있습니다.

 

물론 이 외에도 사용자가 직접 Rule Set을 편집할 수 있습니다. Rule Set은 .ruleset이라는 확장자를 가지는 XML 파일 포맷으로 되어 있습니다. 기본적으로 Visual Studio 2010에서 아래와 같은 UI를 통해서 편집할 수 있도록 되어 있습니다.


 

아래는 Rule Set 파일을 직접 Notepad로 열어본 것입니다.

<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Microsoft Basic Correctness Rules" Description="These rules focus on logic errors and common mistakes made in the usage of framework APIs. Include this rule set to expand on the list of warnings reported by the minimum recommended rules." ToolsVersion="10.0">
  <Localization ResourceAssembly="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.dll" ResourceBaseName="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.Localized">
    <Name Resource="BasicCorrectnessRules_Name" />
    <Description Resource="BasicCorrectnessRules_Description" />
  </Localization>
  <Include Path="minimumrecommendedrules.ruleset" Action="Default" />
  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
    <Rule Id="CA1008" Action="Warn" />
    <Rule Id="CA1013" Action="Warn" />
    <Rule Id="CA1303" Action="Warn" />
    <Rule Id="CA1308" Action="Warn" />
    <Rule Id="CA1806" Action="Warn" />
    <Rule Id="CA1816" Action="Warn" />
    <Rule Id="CA1819" Action="Warn" />
    <Rule Id="CA1820" Action="Warn" />
    <Rule Id="CA1903" Action="Warn" />
    <Rule Id="CA2004" Action="Warn" />
    <Rule Id="CA2006" Action="Warn" />
  </Rules>
</RuleSet>

 

Team Foundation Server Check-In Policy

이 Rule Set 기능은 Team Foundation Server의 Check-In Policy에도 쓰이게 됩니다.

 

맺으며..

이번 Rule Set Feature를 통해서 확실히 이전 버전보다는 Code Analysis를 사용하는 것이 쉬워지고 편리해진 것 같습니다. 하지만, Code Analysis에서 중요한 것은 편의성보다는, Rule의 문제라고 생각됩니다. 그런 면에서 아직 FxCop이 처음 나왔을 때의 200개 정도의 Rule에서 많은 추가가 없다는 것은 굉장히 아쉽습니다. 특히 직접적인 경쟁 제품이라고 볼 수 있는 Compuware의 DevPartner Code Review가 처음 버전부터 600개 이상의 Rule을 가지고 있다는 점에 비교해 본다면 더욱 그렇습니다.

이어지는 포스팅에서는 새롭게 Code Analysis에 추가된 Phoenix 엔진과 그에 따라 다시 복귀한 Data Flow 관련 규칙들에 대해서 한 번 알아보겠습니다.

Visual Studio Team System 2005 에서 코드 분석(Static Code Analysis) 기능이 처음 소개된 바가 있습니다. 이 코드 분석은 Microsoft에서 제안하는 닷넷 프레임워크에서의 디자인 가이드라인과 성능이나 보안, 신뢰성 등의 요소에 대한 Best Practice 등으로 이루어진 200개 이상의 Rule을 기반으로 Code를 검사하고 결함을 발견해 줍니다.

 

원래 이 Code Analysis는 FxCop이란 이름의 독립된 툴로써 세상에 먼저 선을 보인 바 있습니다.

이 FxCop이 Visual Studio 2005 Team System에서 통합되면서 현재의 코드 분석 기능이 나오게 된 것입니다. 실제로 비주얼 스튜디오에서 코드 분석 기능을 담당하는 실행 파일의 이름은 아직도 FxCopCmd.exe입니다.

앞으로 나오게 될 Visual Studio Team System 2010에서는 현재까지 알려진 바로는 다음 세 가지 부분에서 코드 분석의 기능 향상이 이루어 졌습니다. (출처: http://blogs.msdn.com/fxcop/archive/2008/10/30/new-code-analysis-features-in-visual-studio-2010-september-08-ctp.aspx)

  1. Rule Sets – 드디어, 규칙을 프로젝트 별로 하나 하나 빼던 수고스러움을 덜 수 있게 된 것 같습니다. DevPartner Code Review와 같은 상용 툴에서는 진작에 제공되던 기능이었지만, 이제 드디어 Visual Studio 2010에서는 Rule들을 Set으로 만들고 그 Rule Set 기반으로 코드 리뷰를 할 수 있게 되었습니다.
  2. Check-In Policy – 당연한 말이겠지만, 바로 위에서 소개한 Rule Sets 기능이 Team Foundation Server의 Check-In 정책에도 적용할 수 있게 됩니다.
  3. 8개의 새로운 Data-Flow 규칙MSDN Code Gallery의 VS2005와 VS2008 코드 분석 비교 문서를 보시면 아시겠지만, VS2008에서 7개의 규칙이 빠진 바 있습니다. Data-Flow Analysis Engine의 각종 버그와 낮은 성능으로 말미암은 결과라고 하는데, 이번 Visual Studio Team System 2010에서는 Phoenix라는 새로운 분석 엔진의 탑재와 함께 다시 7개의 규칙들이 복귀했고, 새롭게 추가된 하나를 합쳐서 총 8개의 새로운 규칙이 추가되었습니다. 그리고 이번에 추가된 Phoenix 분석 엔진은 당연히 기존 엔진이 가지고 있었던 버그나 성능 문제를 해결한 새롭고 강력한 엔진입니다.

그러면 다음 포스팅을 통해서 이 세 가지 개선점들에 대해서 더 자세히 다뤄보도록 하겠습니다.

안녕하세요. 이번에 Visual Studio Team System 2010 공식 블로그에 새롭게 참여하게 된 LazyDeveloper.Net의 kkongchi라고 합니다. Better Code 시리즈를 통해서 Code Analysis, Unit Test 등에 대한 포스팅을 해보도록 하겠습니다. 부족한 부분 많이 지적해 주시길 바랍니다.

 

TDD?

eXtreme Programming의 창시자 중 하나인 Kent Beck의 eXtreme Programming explained라는 책을 보면 Test를 작성하는 방법에 대해서 이렇게 기술하고 있습니다.

  • If the interface for a method is at all unclear, you write a test before you write the method. (메서드의 인터페이스가 클리어하지 않다면, 메서드를 작성하기 전에 테스트를 먼저 작성해라)

  • If the interface is clear, but you imagine that the implementation will be the least bit complicated, you write a test before you write the method. (메서드의 인터페이스가 클리어하더라도 당신이 생각하기에 구현이 조금 복잡할 것 같다면, 메서드를 작성하기 전에 먼저 테스트를 작성해라)

  • 이런 eXtreme Programming의 Test-Before-Writing 전략을 개발 프로세스에 전면적으로 도입하는 것을 Test Driven Development, 즉 TDD라고 합니다. TDD에 관한 위키피디아 페이지에서 소개하는 TDD의 개발 사이클은 다음과 같습니다. “Red, Green, Refactor”라고 표현하기도 합니다.

    다들 아시다시피, Visual Studio에서는 2005 버전에서부터 Team System의 일부로써 Testing Framework을 제공하고 지원해왔습니다. 그리고 드디어 이번 Visual Studio Team System 2010에서는 완벽하게 TDD의 개념이 Visual Studio Team System안으로 녹아 들어가게 된 것 같습니다. 바로 새롭게 추가된 기능 “Generate” 기능을 통해서, Test를 먼저 작성한 후에 그 Test로부터 코드를 자동으로 Generate해주는 기능이 추가된 것입니다.

     

    TDD Development in VSTS 2010 by “Generate”

    지난 11월에 나온 Visual Studio 2010 and .NET Framework 4.0 Training Kit의 Lab을 통해서 이 기능에 대해서 좀 더 자세히 알아보도록 하겠습니다.

     

    당연히 먼저 테스트를 작성하는 것부터 시작합니다. 하지만, 아직 만들어지지 않은 클래스이기 때문에 아래 그림처럼 빨간색 물결 라인으로 경고가 뜹니다. 여기서 마우스 오른쪽 버튼을 눌러보면, 새로운 “Generate” 기능을 볼 수가 있습니다.

    Generate class를 선택하면 같은 프로젝트에 Class가 추가됩니다. 하지만 Generate other..를 선택하면 아래와 같은 팝업 윈도우가 나옵니다. 클래스를 만들 수 있는 Wizard 개념이라고 보시면 되겠습니다.

    이 Wizard를 통해서 클래스의 Access 한정자, Type, 그리고 파일을 만들 프로젝트까지 설정을 할 수가 있습니다. 이 과정을 통해서 우리는 완벽하게 Test로부터 시작해서 뼈대 코드를 만들어 낼 수가 있습니다. 아래 그림처럼 말이죠..

    이제 이 자동으로 만들어진 뼈대 코드에 구현을 추가하게 되면 여러분들은 다음과 같이 Test를 통과했다는 기분 좋은 화면을 보실 수 있으실 것입니다.


    위에서 보신 Demo Code의 시연은 http://channel9.msdn.com/shows/10-4/10-4-Episode-5-Code-Focused-in-Visual-Studio-2010/#Page=4 에서 Video로도 감상하실 수 있고, http://www.microsoft.com/downloads/details.aspx?FamilyID=752CB725-969B-4732-A383-ED5740F02E93&displaylang=en 에서 Lab Document와 소스 코드도 얻으실 수 있습니다.
     

    지금까지 보신 것처럼 앞으로 출시될 VSTS 2010에서는 IDE 자체에서 완벽한 TDD 지원 기능이 통합되었습니다. TDD가 만능의 도구는 아닙니다. 하지만, 적어도 개발자가 자신의 코드에 대한 이해도가 통상적인 개발 방법보다는 훨씬 크고 깊을 것이라 기대합니다. 어설픈 문서보다는 잘 만들어진 테스트 코드들이 오히려 실제 구현 코드를 이해하는 데 더 도움이 되는 경우도 많습니다. Visual Studio Team System 2010은 효율적인 Test Driven Development를 가능하게 해주는 최고의 도구가 될 것 같습니다.

    부족한 글 읽어주셔서 감사하고, 많은 의견 부탁 드립니다.