Maguyva의 Haskell 지원: 타입 클래스와 모듈을 위한 코드 그래프
Haskell의 타입은 많은 것을 말해 줍니다. 그래프는 누가 그것에 의존하는지 보여 줍니다.
확장자
.hs, .lhs
Elixir에서는 거의 모든 것이 매크로 호출입니다. defmodule, def, use, alias, @impl는 모두 호출로 파싱되고, use GenServer는 파일에 한 번도 나타나지 않는 동작을 끌어옵니다. 호출 구문만 보는 도구는 정의와 의존성을 구분하지 못하고, GenServer 콜백과 헬퍼도 구분하지 못합니다.
Maguyva는 이런 매크로를 관계로 매핑하므로, 에이전트가 어떤 모듈이 비헤이비어를 구현하고 누가 컨텍스트 함수를 호출하는지 볼 수 있습니다.
Maguyva는 .ex와 .exs 파일을 지원합니다. Elixir의 매크로는 다음과 같이 관계로 매핑됩니다.
alias, import, require는 임포트를 기록합니다.use는 임포트를 기록합니다. GenServer, Supervisor, Agent, Task, Phoenix.Controller, Phoenix.LiveView, Ecto.Schema 같은 OTP 및 프레임워크 비헤이비어의 경우, 해당 모듈이 그 비헤이비어를 구현한다는 사실도 기록합니다.@behaviour 속성과 defimpl 블록은 비헤이비어나 프로토콜의 구현을 기록합니다.@doc, @spec, @impl, @callback 같은 예약된 모듈 속성은 뒤따르는 함수의 애너테이션으로 기록됩니다. @timeout 5_000 같은 값 속성은 기록되지 않습니다.%User{} 구조체 리터럴은 인스턴스화로 계산되고, raise는 예외 발생을, rescue와 catch는 예외 처리를 기록합니다.def, defp, defmodule, case, with 같은 언어 매크로는 호출에서 걸러지므로, 호출 그래프에는 여러분의 함수가 나타납니다.
Accounts.register_user를 누가 호출하고, 어떤 컨트롤러에서 호출하나요?” (find_symbol, 그다음 dependency_search incoming)GenServer를 구현하는 모듈은 무엇인가요?” (dependency_search)get_task_context)def, defmodule, alias, import 형식은 문법상 호출 노드이므로, structural_search에서 결과를 반환하는 것은 functions 프리셋뿐이며 그것도 익명 fn 함수에 한정됩니다. 이름이 있는 함수와 모듈에는 find_symbol를 사용하세요.IO.puts, String.*, Enum.take, Process.* 같은 약 55개의 표준 라이브러리 호출은 관계에서 걸러집니다. 이런 호출에는 text_pattern_search를 사용하세요.빠른 시작으로 저장소를 연결한 다음, 호환성 페이지에서 지원 매트릭스를 확인하세요. 다른 함수형 코드베이스라면 Haskell 가이드를 읽어 보세요.
가장 적합한 경우
에이전트 워크플로
엔진 세부 정보
유용한 MCP 진입점
컨텍스트 함수나 모듈의 정의와 호출자가 필요할 때 사용하세요. 구조 프리셋은 이름이 있는 `def` 형식을 선택하지 않습니다.
비헤이비어나 프로토콜에 incoming 탐색을 사용해 그것을 구현하는 모듈을 확인하세요.
"결제 요청을 컨트롤러에서 데이터베이스까지 추적해 줘" 같은 프롬프트에 사용하세요.
관련 가이드
Haskell의 타입은 많은 것을 말해 줍니다. 그래프는 누가 그것에 의존하는지 보여 줍니다.
확장자
.hs, .lhs
Ruby는 산문처럼 읽힙니다. 그래도 그 뒤의 의존성에는 지도가 필요합니다.
확장자
.gemfile, .gemspec, .rake, .rakefile, +2개 더보기