Main Content

이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

프로그램 종속성(Dependency) 식별하기

프로그램이 종속되어 있는 다른 함수와 스크립트가 무엇인지 알아야 할 경우에는 아래 설명된 기법 중 하나를 사용하십시오.

프로그램 파일의 종속성을 간단히 표시하기

특정 함수가 참조하는 모든 프로그램 파일을 간단하게 표시하려면 다음 단계를 따르십시오.

  1. clear functions를 입력하여 메모리에서 모든 함수를 지웁니다(아래의 참고 내용 참조).

    참고

    clear functionsmlock으로 잠겨 있는 함수는 지우지 않습니다. inmem을 사용하여 확인할 수 있는 함수를 잠근 경우에는, munlock을 사용하여 함수의 잠금을 해제한 다음 1단계를 반복하십시오.

  2. 확인하려는 함수를 실행합니다. 참고로, 동일한 함수라도 다른 인수와 함께 호출하면 다른 결과를 얻을 수 있기 때문에 이 단계에 사용하기 위하여 지정하는 함수 인수는 중요합니다.

  3. inmem을 입력하여 함수가 실행될 때 사용된 모든 프로그램 파일을 표시합니다. 어떤 MEX 파일이 사용되었는지도 보려면 다음과 같이 출력 인수를 추가로 지정하십시오.

    [mfiles, mexfiles] = inmem

프로그램 파일의 종속성을 자세히 표시하기

종속된 함수 정보를 더 자세히 표시하려면 matlab.codetools.requiredFilesAndProducts 함수를 사용하십시오. matlab.codetools.requiredFilesAndProducts는 프로그램 파일 외에도, 특정 함수가 종속되어 있는 MathWorks® 제품을 표시합니다. Image Processing Toolbox™에서 edge 함수를 호출하는 함수 myFun이 있는 경우, 다음 명령을 실행해 보겠습니다.

[fList,pList] = matlab.codetools.requiredFilesAndProducts('myFun.m');
fList
fList = 

    'C:\work\myFun.m'

필요한 프로그램 파일은 유일하게, 함수 파일 자체인 myFun뿐입니다.

{pList.Name}'
ans = 

    'MATLAB'
    'Image Processing Toolbox'

파일 myFun.m을 실행하려면 MATLAB®과 Image Processing Toolbox가 모두 필요합니다.

폴더 내에서의 종속성

종속성 리포트는 폴더 안에 있는 MATLAB 코드 파일 간의 종속성을 보여줍니다. 이 리포트를 사용하면 다음을 확인할 수 있습니다.

  • 폴더에 있는 다른 파일들이 필요로 하는 폴더 내 파일들

  • 파일 하나를 삭제할 경우 현재 폴더에서 실패할 파일이 있는지 여부

  • 호출된 파일 중 현재 폴더에 없는 것이 있는지 여부

이 리포트에 다음 파일은 나열되지 않습니다.

  • toolbox/matlab 폴더에 있는 파일(모든 MATLAB 사용자가 가지는 파일임).

    내장 함수 파일을 가리는 함수 파일을 사용할 경우 MATLAB은 이 함수 파일과 내장 함수 파일을 모두 목록에서 제외시킵니다.

  • 익명 함수에서 호출된 파일.

  • 클래스 파일의 슈퍼클래스.

  • eval이나 evalc, run, load, 함수 핸들, 콜백에서 호출된 파일.

    MATLAB은 런타임 전에 이러한 파일을 확인하지 않기 때문에, 이러한 파일은 종속성 리포트에 나타날 수가 없습니다.

  • 일부 메서드 파일.

    종속성 리포트는 사용자가 MATLAB 파일에서 호출한 클래스 생성자를 찾습니다. 그러나 사용자가 결과 객체에 대해 실행시킨 메서드는 종속성 리포트에서 인식할 수 없습니다. 이러한 메서드는 classdef 파일에 별도의 메서드 파일로 존재하거나, 메서드 파일의 슈퍼클래스에 속하는 파일로 존재할 수 있습니다.

의미 있는 결과를 제공하기 위해, 종속성 리포트를 실행할 때는 다음 사항이 요구됩니다.

  • 리포트를 실행할 때의 검색 경로는 폴더에 있는 파일을 실행할 때의 검색 경로와 동일해야 합니다. (즉, 현재 폴더가 검색 경로의 맨 위에 있어야 합니다.)

  • 리포트를 실행하는 폴더에 있는 파일은 검색 경로를 변경하거나 또는 조작하지 않습니다.

  • 폴더에 있는 파일은 변수를 불러오지 않으며, 다른 프로그램 요소들이 동일한 이름을 갖게 되는 이름 충돌을 생성하지 않습니다.

참고

다른 사람의 특정 파일 실행에 필요한 MATLAB 코드 파일 확인을 위한 목적으로는 종속성 리포트를 사용하지 마십시오. 이 경우에는 matlab.codetools.requiredFilesAndProducts 함수를 대신 사용하십시오.

종속성 리포트 생성

  1. 현재 폴더 창을 사용하여 종속성 리포트를 생성할 파일이 포함된 폴더로 이동합니다.

    참고

    경로가 UNC(범용 명명 규칙) 경로, 즉 \\로 시작하는 경로인 경우에는 리포트를 실행할 수 없습니다. 대신, 시스템의 실제 하드 드라이브나 매핑된 네트워크 드라이브를 사용하십시오.

  2. 현재 폴더 창에서 을 클릭한 다음 리포트 > 종속성 리포트를 선택합니다.

    종속성 리포트가 MATLAB 웹 브라우저에서 열립니다.

  3. 원하는 경우, 다음과 같이 리포트 내에서 옵션을 하나 이상 선택합니다.

    • 폴더에 있는 각 파일(부모)이 호출하는 모든 MATLAB 코드 파일(자식)의 목록을 보려면 자식 함수 표시를 선택하십시오.

      리포트는 예를 들어, 지정된 툴박스에서 각 자식 함수가 있는 위치를 나타냅니다. 리포트에서 자식 함수의 위치를 알 수 없다고 명시하는 경우, 다음과 같은 이유 때문일 수 있습니다.

      • 자식 함수가 검색 경로에 없습니다.

      • 자식 함수가 현재 폴더에 없습니다.

      • 파일이 이동되었거나 삭제되었습니다.

    • 각 MATLAB 코드 파일을 호출하는 파일 목록을 보려면 부모 함수 표시를 선택하십시오.

      리포트는 호출하는 함수인 부모 함수를 현재 폴더에 있는 함수로 제한합니다.

    • 리포트에 로컬 함수를 포함시키려면 부 함수 표시를 선택하십시오. 리포트는 메인 함수 바로 뒤에 로컬 함수를 나열하며, 이 로컬 함수를 회색으로 강조 표시합니다.

  4. 현재 폴더에서 리포트 실행을 클릭합니다.

종속성 리포트 읽기 및 사용

다음 이미지는 종속성 리포트를 보여줍니다. 이 리포트는 chirpy.m이 Signal Processing Toolbox™에서 두 개의 파일을 호출하고, Image Processing Toolbox에서 파일 하나를 호출한다는 것을 나타냅니다. 또한 go.m이 현재 폴더에 있는 mobius.m을 호출한다는 것도 보여줍니다.

종속성 리포트에는 다음 내용이 포함됩니다.

  • MATLAB 파일 목록

    종속성 리포트를 실행한 폴더에 있는 파일 목록입니다. 이 열에 있는 링크를 클릭하면 파일이 편집기에서 열립니다.

  • 자식

    MATLAB 파일에 의해 호출되는 함수입니다.

    이 열에 있는 링크를 클릭하면 MATLAB 파일이 해당 행에서 열리고, 호출된 함수에 대한 첫 번째 참조로 이동합니다. 예를 들어, 종속성 리포트가 위 이미지에 표시된 대로 나타난다고 가정하겠습니다. \images\images\erode.m을 클릭하면 chirpy.m이 열리고, erode를 참조하는 첫 번째 라인에 커서가 놓입니다. 다시 말해서, erode.m은 열리지 않습니다.

  • 여러 개의 클래스 메서드

    이 리포트는 정적 분석이므로, 이 리포트에서는 런타임 데이터형을 확인할 수 없으며, 따라서 파일에 필요한 특정 클래스 메서드를 식별할 수 없습니다. 하나의 참조 메서드에 대해 여러 개의 클래스 메서드가 일치하는 경우 종속성 리포트는 파일 이름 옆에 물음표 링크를 삽입합니다. 다음 이미지에 물음표가 표시되어 있습니다.

    물음표 링크를 클릭하면 MATLAB이 사용할 수도 있는, 지정된 이름을 갖는 클래스 메서드가 나열됩니다. MATLAB은 검색 경로에서 지정된 메서드 파일(이 경우 freqresp.m)과 일치하는 거의 모든 메서드 파일을 나열합니다. 따라서, 관련 없는 클래스 메서드나 MATLAB 내장 함수도 이 목록에 표시될 수 있습니다.

    MATLAB이 어떤 파일을 사용할지를 사용자가 직접 결정할 필요는 없습니다. 프로그램 런타임 시 호출되는 객체에 따라 MATLAB이 사용할 메서드를 결정합니다.