방법: 종속성 그래프를 사용하여 코드 탐색
Visual Studio Ultimate에서는 종속성 그래프를 사용하여 기존 코드의 구조 및 관계를 자세히 알아볼 수 있습니다. 이러한 그래프에서는 구조를 노드로 나타내고 관계는 노드 간의 화살표로 표시되는 링크로 나타냅니다. 그래프를 생성하려면 방법: .NET 코드에 대한 종속성 그래프 생성을 참조하십시오.
다음 예제에서는 이 그래프에서 구조와 관계가 각각 노드와 링크로 나타나는 방식을 보여 줍니다.
그래프의 노드 및 링크
다음 예제에서는 이 그래프에서 구조와 포함 관계가 그룹으로 나타나는 방식을 보여 줍니다.
그래프의 그룹화된 노드
경고
그래프에서는 성공적으로 빌드되는 코드의 종속성만 보여 줍니다. 빌드 오류가 발생하는 구성 요소와 해당 내용은 나타나지 않습니다. 따라서 이 그래프를 기반으로 아키텍처 관련 사항을 결정하기 전에 구성 요소가 실제로 빌드되는지와 구성 요소에 종속성이 있는지를 확인해야 합니다.
항목 내용
그래프에서 종속성 탐색
복잡성 영역 찾기
그래프에서 종속성 탐색
그래프에서 종속성은 다음과 같은 종류의 링크로 나타냅니다.
개별 링크는 두 노드 간의 단일 종속성을 나타냅니다.
집계 링크는 두 그룹 사이에서 동일한 방향으로 이동하는 모든 종속성을 나타냅니다.
그룹 간 링크는 단지 서로 다른 그룹에 있는 두 노드 간의 링크입니다.
참고
기본적으로 그래프에서는 선택된 노드에 대해서만 그룹 간 링크가 표시됩니다. 이러한 링크를 항상 표시하려면 그래프 도구 모음에서 그래프에서 그룹 간 링크가 렌더링되는 방법 변경 단추 옆의 드롭다운 목록을 클릭하고 그룹 간 링크 모두 표시를 클릭합니다. 그래프 도구 모음이 표시되지 않은 경우 보기 메뉴에서 도구 모음을 가리킨 다음 방향이 지정된 그래프를 클릭합니다.
다음 작업으로 관심 있는 종속성을 탐색할 수 있습니다.
작업 |
수행할 단계 |
---|---|
링크가 나타내는 종속성 목록 보기 |
|
이름으로 노드 찾기 그룹화된 노드의 여러 수준에서 검색하는 데 사용합니다. |
|
링크의 소스 또는 대상 찾기 링크가 너무 많아 특정 링크의 소스 또는 대상을 쉽게 확인할 수 없는 경우 이 방법을 사용합니다. |
|
서로 다른 그룹에 있는 노드 간의 종속성 확인 |
|
집계 링크에 포함된 종속성 확인
참고
이 작업은 링크의 각 끝이 어셈블리에 연결되어 있는 경우에만 수행할 수 있습니다.어셈블리 정보가 없으면 그래프를 만들 수 없습니다.
|
|
복잡성 영역 찾기
종속성 그래프를 사용하여 개선할 수 있는 코드 영역을 확인할 수 있습니다. 잘 구성된 종속성 그래프에는 최소한의 종속성이 표시됩니다. 예를 들어, 다음을 수행할 수 있습니다.
루프 또는 순환 종속성이 있는 코드를 찾습니다.
이러한 영역을 검사하여 단순화할 수 있는지 여부를 확인합니다. 이러한 순환을 중단할 수 있는지 고려합니다.
종속성이 너무 많은 코드를 찾습니다.
이러한 영역을 검사하여 해당 영역에서 지나치게 많은 기능을 수행하고 있는지 확인하거나 해당 영역을 변경할 경우의 영향을 확인할 수 있습니다. 코드의 유지 관리, 변경, 테스트 및 재사용을 보다 쉽게 하려면 이러한 영역을 리팩터링하여 보다 명확하게 정의되도록 할 수 있는지 여부나 비슷한 기능을 수행하는 코드를 병합할 수 있는지 여부를 고려합니다.
종속성이 없는 코드를 찾습니다.
이러한 영역을 검사하여 해당 영역이 필요한지 여부나 이 코드를 제거해야 할지 여부를 확인합니다.
이러한 그래프에 대해 특정 분석기를 실행하여 위에 나열된 작업을 쉽게 수행할 수 있습니다. 이러한 분석기는 적용 후 계속 실행됩니다. 그래프를 변경하면 적용된 분석기에서 업데이트된 그래프를 자동으로 다시 처리합니다. 분석기 실행을 중지하려면 범례 상자에서 분석기를 마우스 오른쪽 단추로 클릭하고 삭제를 클릭합니다.
참고
매우 큰 그래프가 있는 경우 분석기를 실행하면 메모리 부족 예외가 발생할 수 있습니다. 이러한 예외가 발생하는 경우 그래프를 편집하여 해당 범위를 줄이거나 더 작은 그래프를 생성한 다음 분석기를 실행합니다.
코드에서 복잡성 영역을 찾으려면
그래프 레이아웃이 트리 레이아웃이나 빠른 클러스터 레이아웃으로 설정되어 있는지 확인합니다.
자세한 내용은 방법: 그래프 문서 찾아보기 및 탐색을 참조하십시오.
그래프를 마우스 오른쪽 단추로 클릭한 다음 분석기를 가리키고 다음 중 하나를 클릭합니다.
분석기
식별하는 노드
순환 참조
상호 간에 순환 종속성이 있는 노드
참고제네릭 그룹을 확장할 경우 이 그룹 내의 순환 종속성은 그래프에 표시되지 않습니다.허브 찾기
복잡하게 연결된 노드의 상위 25%에 속하는 노드
이러한 노드를 선택하고 그래프의 다른 모든 노드를 숨기려면
그래프를 마우스 오른쪽 단추로 클릭한 다음 고급 선택 도구 표시를 클릭합니다.
선택 영역 상자에서 속성을 확장하고 허브를 클릭합니다.
허브에서 True를 클릭합니다.
가장 복잡하게 연결된 노드의 상위 25% 노드가 선택됩니다.
그래프를 마우스 오른쪽 단추로 클릭하고 선택 영역을 가리킨 다음 선택되지 않은 항목 숨기기를 클릭합니다.
그래프에서 선택되지 않은 노드가 숨겨지고 분석기가 새 노드를 허브로 식별합니다.
그래프 레이아웃을 종속성 행렬 뷰로 전환하면 종속성 밀도가 높은 영역을 식별할 수도 있습니다. 종속성 행렬 뷰에 대한 자세한 내용은 방법: 그래프 문서 찾아보기 및 탐색을 참조하십시오.
참조되지 않는 노드
다른 노드에서 참조하지 않는 노드
주의코드가 사용되지 않는 것으로 가정하기 전에 이러한 각 경우를 확인해야 합니다.XAML 종속성과 런타임 종속성 같은 일부 종속성은 코드에서 정적으로 찾을 수 없습니다.