본문 바로가기

프로그래밍/Tool

[Visual Studio] 'Code snippet' 으로 템플릿 코드 만들기

개발을 하다보면 특정 양식의 코드를 연속으로 작성해야 할 때가 있습니다.

제 경우에는 클래스의 속성(Property)를 만든다거나 유닛 테스트(Unit Test) 함수를 만들 때 그렇더라구요. 

 

여기서는 회사에서 제가 메인으로 사용하는 IDE가 Visual Studio이다 보니, Visual Studio에서 지원하는 기능에 대해서 간단하게 소개해볼까 합니다. 

아래의 내용은 Microsoft 사이트의 'Walkthrough: Create a code snippet' 문서에서도 확인 가능합니다. 


Visual Studio에서는 'Code snippet(코드 조각 관리)'를 이용해서 특정 템플릿의 코드를 만들 수 있습니다. 

 

만들어 볼 코드 템플릿은 아래와 같습니다. 

- 생성 단축키: tm

- 생성 되는 코드: 

[Test]
[Description("")]
public void TestMethod()
{
   // Arrange
   
   // Act
   
   // Assert

}

 

1. 먼저 xml 형식의 '*.snippet' 파일을 만들어야 합니다. 

 

기본 템플릿은 아래와 같습니다. 여기서 필요한 내용들을 추가해야 합니다. 

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title></Title>
        </Header>
        <Snippet>
            <Code Language="">
                <![CDATA[]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

 

아래는 'TestMethod' 생성을 위해서 제가 수정한 템플릿입니다. 내용을 참고하셔서 필요한 내용을 넣으시면됩니다.

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
          <Title>TestMethod</Title>
          <Description>Write test method code template</Description>
          <Shortcut>tm</Shortcut>
        </Header>
        <Snippet>
            <Code Language="CSharp">
                <![CDATA[[Test]
                [Description("")]
                public void $MethodName$()
                {
                    // Arrange
                    
                    // Act
                    
                    // Assert
                    
                }]]>
            </Code>
            <Declarations>
                <Literal>
                    <ID>MethodName</ID>
                    <ToolTip>Input test method name</ToolTip>
                    <Default>TestMethod</Default>
                </Literal>
            </Declarations>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

 

  • Title: 스니펫의 이름
  • Description: 스니펫 설명
  • Shortcut: 단축키. 개발할 때 이 단축키를 입력해서 템플릿을 생성하기 때문에 중요합니다. 
  • Code-Language: 사용 언어. C#이라는 'CSharp'을 입력했습니다. 
    (VB, CSharp, CPP, XML, JavaScript, TypeScript, SQL, HTML을 지원합니다. 여기에서 확인 가능합니다)
  • Code: 생성될 템플릿 코드. 여기서 작성한 코드가 단축키를 입력했을 때 생성됩니다. 
    - $MethodName$: 생성되는 코드에서 사용자가 입력해줘야 할 부분이 있다면 '$~$'로 묶어서 선언합니다. 여기서는 테스트함수의 이름을 생성이후에 입력해줘야 하기 때문에 사용했습니다. 필요없으면 사용하지 않아도 됩니다.
  • Literal: '$~$' 을 이용해서 사용하는 변수를 여기서 설정합니다. 저는 'Code' 부분에서 'MethodName'을 사용했기 때문에 여기서 선언해줬습니다. 
    - ID: 고유 아이디
    - ToolTip: 툴팁 정보
    - Default: 생성되는 기본 값.

2. 만든 파일을 Visual Studio에 추가합니다. 

 

Visual Studio 메뉴에서 'Tools(도구) → Code Snippets Manager(코드 조각 관리자)' 로 이동합니다.
(단축키: Ctrl +K, Ctrl + B)

 

'가져오기' 버튼을 누르고, 생성한 '*.snippet' 파일을 불러옵니다. 

 

추가한 내요을 확인하고 '마침' 버튼을 누르면 완료됩니다. 

 

3. 생성한 스니펫을 사용해보겠습니다. 

 

설정한 단축키(tm)을 입력하면, 아래 그림처럼 IDE에서 관련 설명을 보여줍니다. 

 

이 상태에서 '탭' 버튼을 두번 클릭하면 입력했던 템플릿 코드가 만들어집니다. 

테스트로 생성한 스니펫의 경우는 'TestMethod'라는 값을 설정했기 때문에 커서가 'TestMethod'로 가 있습니다. 

원하는 함수 이름을 입력하고 엔터키를 입력하면 최종 생성이 완성됩니다.

 

4. 생성한 스니펫을 수정하기

 

입력한 내용은 아래의 경로에 파일이 저장됩니다. 

$Documents\Visual Studio '버전'\Code Snippets\'사용 언어'\My Code Snippets

// 제 경우
$Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets

여기서 파일을 열어서 수정하면 내용 변경이 가능합니다. 

 

 

5. 마무리

 

제 경우는 유닛 테스트를 작성할 때 함수의 템플릿을 만들거나, 유닛 테스트 내에서 'Assert.AreEqual' 함수를 사용할 때 이 기능을 사용하고 있습니다. 

자주 사용하는 내용에 대해서 템플릿을 작성하셔서 사용하면 코드 작성 시간이나 반복된 내용에 대한 타이핑 양을 줄일 수 있을 것 같습니다. 

 

마지막으로 위에서 사용한 'TestMethod.snippet' 파일과 'AssertAreEqual.snippet' 파일을 아래에 추가했습니다. 

 

AssertAreEqual.snippet
0.00MB
TestMethod.snippet
0.00MB