Intellij로 코드 분석하기 #UML(Diagram)
Spring Core를 공부해보려고 Spring source를 받아서 분석하기 위해 어떻게 해야할지 고민했다. 부끄럽지만 개발 경력 3년동안 코드 분석을 처음 해 보는 것 같다. 남에 코드를 많이 읽어보라는 말도 많고, 나름 Spring을 자주 사용했는데 Core 소스나 구조가 궁금해져서 분석을 시작했다. 며칠 동안 어떻게 분석했는지 간단하게 정리하려 한다.
개발환경
- Mac OS El Capitan
- Intellij 15
- Java8
Searh Everywhere 단축키는 위 이미지 중앙 첫번째로 보인다. 나 같은 경우는 Shift키를 2번 누르면 나온다.
Search Everywhere를 사용해 AnnotaionConfigApplicationContext을 찾은 이미지이다. 현재 프로젝트 내에 의존되어 있는 클래스명을 알고 있다면 쉽게 찾을 수 있다.
클래스 의존 UML
현재 찾은 클래스에 UML을 자동으로 만들 수 있는데 이 기능이 Intellij에 UML(또는 Diagram이라고도 한다.)이다.
현재는 AnnotaionConfigApplicationContext 클래스에 UML을 보기 위해 설명한다.
클래스명 > 오른쪽 마우스 클릭 > Diagrams > Show Diagram을 선택한다.
꼭 클래스를 열어 클래스명을 선택해서 Diagram을 생성할 필요 없이 클래스 파일 자체도 Diagram 선택이 가능하다. 심지어 Maven Dependency를 Diagram으로 생성도 가능하다.(아주 좋음)
그럼 위 이미지와 같이 AnnotaionConfigApplicationContext 클래스에 의존된 부모 클래스 또는 인터페이스에 UML이 생성되어 보여진다. 참고로 선택한 AnnotaionConfigApplicationContext 클래스에 부모는 보이지만 자식은 기본으로 보이지 않는다. 볼 수 있는 방법은 아래에서 설명할 것이다. 여기까지가 기본적인 UML을 생성하고 보는 방법이다.
UML(Diagram) 사용법
# 메뉴 설명
UML을 생성하면 Editor 상단에 위와 같은 메뉴가 나오는데 순서대로 설명하겠다. (왼쪽부터 오른쪽으로 설명)
클래스 Field를 보여준다.
클래스 생성자를 보여준다.
클래스 메소드를 보여준다.
클래스 property를 보여준다.
클래스에 Inner Class를 보여준다.
접근제한자를 기준으로 필터링된 결과(클래스)를 보여준다.
클래스 종류(전체, 테스트 클래스, 현재 프로젝트 클래스를 제외한 클래스 등등)를 기준으로 필터링된 결과(클래스)를 보여준다.
클래스간 의존 관계를 보여준다.
특정 클래스에 부모나 자식 관계를 추가해서 보고 싶다면 해당하는 클래스를 오른쪽 마우스 클릭 > Show Implementations(자식) 또는 Show Parents(부모) 를 선택해 의존 클래스를 선택하면 현재 UML 화면에 추가된다.
# 의존 클래스 추가하기
UML(Diagram)을 생성하면 기본적으로 해당 클래스에 부모 클래스 또는 인터페이스만 보이는게 기본이다. 하지만 코드를 분석하다보면 부모 자식 관계가 아닌 의존되는 클래스에 UML을 보고 싶은 경우가 있다. 이 경우에 그 의존되는 클래스를 현재 UML에 추가하면 자동으로 의존 관계를 보여주는 기능을 알아볼 것이다.
화면에 오른쪽 마우스 클릭 > Add Class to Diagram...
선택하면 앞에 Search Everywhere 와 같은 창이 뜨는데 동일하게 클래스 조회해서 추가하면 된다.
출처 : https://blog.woniper.net/291?category=537962
'IDE Tool > IntelliJ IDEA' 카테고리의 다른 글
IntelliJ IDEA에서 .gitignore에 파일 / 폴더를 마우스 우클릭으로 편하기 추가하기. (0) | 2020.12.23 |
---|---|
intellij SQL keyword 자동 uppercase (0) | 2020.09.08 |
mac os에서 intellij 완전 제거 / 백업 하기 (0) | 2020.09.08 |
intellij, gradle에서 generated sourceSet 설정 (0) | 2020.09.08 |
[Intellij, Android Studio] 창 여러개 띄우기 설정 (Project Multi Opening) (0) | 2020.09.08 |
[Intellij] lombok 사용하기 (0) | 2020.09.08 |
[intellij] class, method 명 is never used 경고 없애기 (0) | 2020.09.07 |
[IntelliJ] 기본설정(font, theme, encoding, keymap), Plugin설치, Library 추가 방법 (0) | 2020.09.07 |