scope:calls { to = <target>, where = <conditions>, using = <annotations>, with = <function>,}
Reference
to
The to argument specifies the called function(s) to identify in the binary. It can be a string (function name), an AddressValue (function address), or a CallsToQuery with pattern matching options.
where
The where argument specifies a Lua expression that is used to filter function calls.
The only allowed variable in the expression is caller, which exposes the following methods:
caller:named "name": returns true if the caller function name matches the provided name.
caller:has_call "name": returns true if the caller contains a call to the specified function.
caller:has_calls {"name1", "name2"}: returns true if the caller contains calls to all the specified functions.
caller:calls "name": returns the table of call-site addresses for the specified function.
using
The using argument accepts a Lua expression that specifies how parameters should be annotated for the dataflow engine.
callees: allows annotations to be assigned to parameters and the returned value for arbitrary function calls
parameters: allows annotations to be assigned to the analysed function parameters
The parameters attribute is used to annotate the parameters of the function being analyzed, while the callees attribute is used to annotate the parameters and outputs of functions that are called within the function being analyzed.
Do not use the same annotation several times.
Note: The function var:named "Name" creates a named annotation for tracking a specific variable in the dataflow.
with
The with argument specifies the Lua function to execute for each matching call site in the binary file.
Example
Let’s consider the following function:
int FunctionA(int v1, char v2, int *v3) { int val = 3; long r = FunctionB(val, "hello"); FunctionC(v1, val, r); return r;}
The following rule will be able to identify the function call to FunctionC:
scopes = scope:calls { to = "FunctionC", where = caller:named "FunctionA" and caller:has_call "FunctionB", using = { callees = { FunctionB = { output = var:named "Out", inputs = { var:named "VarC1", _ }, }, }, -- `parameters` indicates the parameters of FunctionA parameters = { var:named "VarB1", _, _ }, -- `_` is a placeholder }, with = function(project, context) local arg1 = context.inputs[1] if arg1 ~= nil and arg1.annotation == "VarB1" then -- The first parameter of `FunctionA` is propagated to the first parameter of `FunctionC` end local arg2 = context.inputs[2] if arg2 ~= nil and arg2.annotation == "VarC1" then -- The first parameter of `FunctionB` is propagated to the second parameter of `FunctionC` end local arg3 = context.inputs[3] if arg3 ~= nil and arg3.annotation == "Out" then -- The return value of `FunctionB` is propagated to the third parameter of `FunctionC` end end,}
In this example, we track three different values in FunctionA:
The first parameter of FunctionA (annotated as “VarB1”) is passed as the first parameter to FunctionC.
The first parameter of FunctionB (annotated as “VarC1”) is passed as the second parameter to FunctionC.
The return value of FunctionB (annotated as “Out”) is passed as the third parameter to FunctionC.
The _ placeholders in the annotations indicate parameters we don’t need to track.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"VulHunt rules","colors":{"primary":"#938aff","dark":"#3f3b6c"},"logo":{"light":"https://mintcdn.com/vulhunt-docs/4J8ydyrFXmRmhhWG/assets/logo/binarly_light.svg?fit=max\u0026auto=format\u0026n=4J8ydyrFXmRmhhWG\u0026q=85\u0026s=14847ddc32ce27865d094cef79319891","dark":"https://mintcdn.com/vulhunt-docs/4J8ydyrFXmRmhhWG/assets/logo/binarly_dark.svg?fit=max\u0026auto=format\u0026n=4J8ydyrFXmRmhhWG\u0026q=85\u0026s=3f32c947da03386eec89b02648efead5","href":"https://binarly.io"},"favicon":"https://mintcdn.com/vulhunt-docs/4J8ydyrFXmRmhhWG/assets/favicon.png?fit=max\u0026auto=format\u0026n=4J8ydyrFXmRmhhWG\u0026q=85\u0026s=74e1ee6351224027ba56a2fe5c4f04c8","appearance":{"default":"light","strict":true},"background":{"decoration":"gradient"},"navbar":{"primary":{"type":"button","label":"Support","href":"https://dashboard.mintlify.com"}},"footer":{"socials":{"youtube":"https://www.youtube.com/@binarly","x":"https://x.com/binarly_io","github":"https://github.com/binarly-io","linkedin":"https://www.linkedin.com/company/binarlyinc"}},"fonts":{"family":"Exo 2"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vulhunt-docs","hasAudioNarration":false,"actualSubdomain":"vulhunt-docs","customDomains":["vulhunt-docs.binarly.io"],"gitSource":{"type":"github","owner":"binarly-io","repo":"binarly-vulhunt-docs","deployBranch":"platform-v2.0","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6a8d85f0f1cd0f8c1cd1a8e5","clientVersion":"0.0.4142","searchFilterCounts":[{"language":"default","tag":"VulHunt Reference","count":47},{"language":"default","tag":"User Guide","count":31},{"language":"default","tag":"Types","count":28},{"language":"default","tag":"Scopes","count":19},{"language":"default","tag":"VulHunt Rules","count":14},{"language":"default","tag":"Scopes Result","count":13},{"language":"default","tag":"VulHunt CLI","count":9},{"language":"default","tag":"Annotations","count":8},{"language":"default","tag":"Options","count":5},{"language":"default","tag":"VulHunt SDK","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"vulhunt-reference/scopes/calls-scope","slug":"/vulhunt-reference/scopes/calls-scope","pageMetadata":{"title":"Calls Scope","category":"scope","description":null,"href":"/vulhunt-reference/scopes/calls-scope"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.em,{children:`scope:calls`}),` allows to match and analyze specific function calls in the binary, including tracking dataflow between parameters and return values.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Parameter`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Type`}),_jsx(_components.th,{style:{textAlign:`center`},children:`Required`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`to`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Called function(s) to identify in the binary`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.code,{children:`string`}),`, `,_jsx(_components.a,{href:`/vulhunt-reference/types/address-value`,children:_jsx(_components.code,{children:`AddressValue`})}),`, or `,_jsx(_components.a,{href:`/vulhunt-reference/types/calls-to-query`,children:_jsx(_components.code,{children:`CallsToQuery`})})]}),_jsx(_components.td,{style:{textAlign:`center`},children:`Yes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`where`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Lua expression used to filter function calls`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Lua expression`}),_jsx(_components.td,{style:{textAlign:`center`},children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`using`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Lua expression specifying parameter annotations for the dataflow engine`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Lua expression`}),_jsx(_components.td,{style:{textAlign:`center`},children:`Yes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`with`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Lua function to execute for each matching call site`}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`fun(project: ProjectHandle, context: CallSiteTable)`})}),_jsx(_components.td,{style:{textAlign:`center`},children:`Yes`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`syntax`,children:`Syntax`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`lua`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`lua`,children:_jsxs(_components.code,{language:`lua`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`scope`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`calls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` to`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` \u003ctarget>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` where`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` \u003cconditions>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` using`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` \u003cannotations>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` with`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` \u003cfunction>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`reference`,children:`Reference`}),`\n`,_jsx(Heading,{level:`4`,id:`to`,children:`to`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.em,{children:`to`}),` argument specifies the called function(s) to identify in the binary. It can be a string (function name), an `,_jsx(_components.a,{href:`/vulhunt-reference/types/address-value`,children:_jsx(_components.code,{children:`AddressValue`})}),` (function address), or a `,_jsx(_components.a,{href:`/vulhunt-reference/types/calls-to-query`,children:_jsx(_components.code,{children:`CallsToQuery`})}),` with pattern matching options.`]}),`\n`,_jsx(Heading,{level:`4`,id:`where`,children:`where`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.em,{children:`where`}),` argument specifies a Lua expression that is used to filter function calls.\nThe only allowed variable in the expression is `,_jsx(_components.code,{children:`caller`}),`, which exposes the following methods:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`caller:named \"name\"`}),`: returns true if the caller function name matches the provided name.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`caller:has_call \"name\"`}),`: returns true if the caller contains a call to the specified function.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`caller:has_calls {\"name1\", \"name2\"}`}),`: returns true if the caller contains calls to all the specified functions.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`caller:calls \"name\"`}),`: returns the table of call-site addresses for the specified function.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`using`,children:`using`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.em,{children:`using`}),` argument accepts a Lua expression that specifies how parameters should be annotated for the dataflow engine.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`callees`}),`: allows annotations to be assigned to parameters and the returned value for arbitrary function calls`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`parameters`}),`: allows annotations to be assigned to the analysed function parameters`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`parameters`}),` attribute is used to annotate the parameters of the function being analyzed, while the `,_jsx(_components.code,{children:`callees`}),` attribute is used to annotate the parameters and outputs of functions that are called within the function being analyzed.`]}),`\n`,_jsx(Warning,{children:` Do not use the same annotation several times. `}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.em,{children:`Note:`}),` The function `,_jsx(_components.code,{children:`var:named \"Name\"`}),` creates a named annotation for tracking a specific variable in the dataflow.`]}),`\n`,_jsx(Heading,{level:`4`,id:`with`,children:`with`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.em,{children:`with`}),` argument specifies the Lua function to execute for each matching call site in the binary file.`]}),`\n`,_jsx(Heading,{level:`4`,id:`example`,children:`Example`}),`\n`,_jsx(_components.p,{children:`Let’s consider the following function:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`c`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`c`,children:_jsxs(_components.code,{language:`c`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`int`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` FunctionA`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`int`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` v1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`char`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` v2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`int`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` *`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`v3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` int`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` val `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` long`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` r `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` FunctionB`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(val, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"hello\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` FunctionC`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(v1, val, r);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` r;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The following rule will be able to identify the function call to `,_jsx(_components.code,{children:`FunctionC`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`30`,language:`lua`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`lua`,children:_jsxs(_components.code,{language:`lua`,numberOfLines:`30`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`scopes`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` scope`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`calls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` to`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"FunctionC\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` where`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` caller`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`named`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"FunctionA\" `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`and`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` caller`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`has_call`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"FunctionB\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` using`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` callees`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FunctionB`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` output`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` var`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`named`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Out\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` inputs`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`var`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`named`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"VarC1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`_`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\" -- `parameters` indicates the parameters of FunctionA\"})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` parameters`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`var`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`named`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"VarB1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`_`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`_`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\"-- `_` is a placeholder\"})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` with`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`project`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` local`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` arg1`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`inputs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` arg1`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ~=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` and`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` arg1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`annotation`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ==`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"VarB1\" `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`then`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\" -- The first parameter of `FunctionA` is propagated to the first parameter of `FunctionC`\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` end`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` local`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` arg2`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`inputs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` arg2`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ~=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` and`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` arg2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`annotation`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ==`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"VarC1\" `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`then`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\" -- The first parameter of `FunctionB` is propagated to the second parameter of `FunctionC`\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` end`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` local`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` arg3`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`inputs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` arg3`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ~=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` and`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` arg3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`annotation`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ==`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Out\" `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`then`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\" -- The return value of `FunctionB` is propagated to the third parameter of `FunctionC`\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` end`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` end`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`In this example, we track three different values in `,_jsx(_components.code,{children:`FunctionA`}),`:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`The first parameter of `,_jsx(_components.code,{children:`FunctionA`}),` (annotated as “VarB1”) is passed as the first parameter to `,_jsx(_components.code,{children:`FunctionC`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`The first parameter of `,_jsx(_components.code,{children:`FunctionB`}),` (annotated as “VarC1”) is passed as the second parameter to `,_jsx(_components.code,{children:`FunctionC`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`The return value of `,_jsx(_components.code,{children:`FunctionB`}),` (annotated as “Out”) is passed as the third parameter to `,_jsx(_components.code,{children:`FunctionC`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`_`}),` placeholders in the annotations indicate parameters we don’t need to track.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Calls Scope","category":"scope","description":null,"href":"/vulhunt-reference/scopes/calls-scope"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Syntax","slug":"syntax","depth":3,"children":[]},{"title":"Reference","slug":"reference","depth":3,"children":[]},{"title":"to","slug":"to","depth":4,"children":[]},{"title":"where","slug":"where","depth":4,"children":[]},{"title":"using","slug":"using","depth":4,"children":[]},{"title":"with","slug":"with","depth":4,"children":[]},{"title":"Example","slug":"example","depth":4,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"vulhunt-docs","siteName":"VulHunt rules","title":"Calls Scope - VulHunt rules","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-25T12:09:46.942Z","originalFileLocation":"vulhunt-reference/scopes/calls-scope.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"VulHunt rules\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Calls Scope - VulHunt rules\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"VulHunt rules\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://vulhunt-docs.binarly.io/vulhunt-reference/scopes/calls-scope\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://vulhunt-docs.mintlify.site/_mintlify/api/og/v2?division=Scopes\u0026amp;title=Calls+Scope\u0026amp;theme=d3c36375f79c20189d104bb2\u0026amp;signature=634b8b1c4b584ce2f41175058c16fbaf0aeb3e5fcdf14c80994915d94706f944\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Calls Scope - VulHunt rules\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://vulhunt-docs.mintlify.site/_mintlify/api/og/v2?division=Scopes\u0026amp;title=Calls+Scope\u0026amp;theme=d3c36375f79c20189d104bb2\u0026amp;signature=634b8b1c4b584ce2f41175058c16fbaf0aeb3e5fcdf14c80994915d94706f944\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"VulHunt rules\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#938aff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://vulhunt-docs.binarly.io/vulhunt-reference/scopes/calls-scope\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/vulhunt-reference/scopes/calls-scope.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://vulhunt-docs.binarly.io/#organization\",\"name\":\"VulHunt rules\",\"url\":\"https://vulhunt-docs.binarly.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vulhunt-docs/4J8ydyrFXmRmhhWG/assets/logo/binarly_light.svg?fit=max\u0026auto=format\u0026n=4J8ydyrFXmRmhhWG\u0026q=85\u0026s=14847ddc32ce27865d094cef79319891\"}},{\"@type\":\"WebSite\",\"@id\":\"https://vulhunt-docs.binarly.io#website\",\"name\":\"VulHunt rules\",\"url\":\"https://vulhunt-docs.binarly.io\",\"publisher\":{\"@id\":\"https://vulhunt-docs.binarly.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://vulhunt-docs.binarly.io/vulhunt-reference/scopes/calls-scope#webpage\",\"url\":\"https://vulhunt-docs.binarly.io/vulhunt-reference/scopes/calls-scope\",\"name\":\"Calls Scope\",\"dateModified\":\"2026-08-25T12:09:46.942Z\",\"isPartOf\":{\"@id\":\"https://vulhunt-docs.binarly.io#website\"},\"breadcrumb\":{\"@id\":\"https://vulhunt-docs.binarly.io/vulhunt-reference/scopes/calls-scope#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://vulhunt-docs.binarly.io/vulhunt-reference/scopes/calls-scope#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Scopes\",\"item\":\"https://vulhunt-docs.binarly.io/vulhunt-reference/scopes/project-scope\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calls Scope\",\"item\":\"https://vulhunt-docs.binarly.io/vulhunt-reference/scopes/calls-scope\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://vulhunt-docs.binarly.io/vulhunt-reference/scopes/calls-scope#article\",\"headline\":\"Calls Scope\",\"name\":\"Calls Scope\",\"url\":\"https://vulhunt-docs.binarly.io/vulhunt-reference/scopes/calls-scope\",\"mainEntityOfPage\":{\"@id\":\"https://vulhunt-docs.binarly.io/vulhunt-reference/scopes/calls-scope#webpage\"},\"dateModified\":\"2026-08-25T12:09:46.942Z\",\"publisher\":{\"@id\":\"https://vulhunt-docs.binarly.io/#organization\"},\"isPartOf\":{\"@id\":\"https://vulhunt-docs.binarly.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"VulHunt rules\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"VulHunt rules\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/vulhunt-reference/scopes/calls-scope.md","siteName":"VulHunt rules","nav":{"global":null,"tabs":[{"tab":"User Guide","pages":[{"title":"User Guide","href":"/user-guide/get-started/introduction"}]},{"tab":"VulHunt Reference","groups":[{"group":"Conventions","pages":[{"title":"Type Conventions","href":"/vulhunt-reference/type-notation"}]},{"group":"VulHunt Rules","pages":[{"title":"Rule Fields","href":"/vulhunt-reference/vulhunt-rules/rule-fields"}]},{"group":"Scopes","pages":[{"title":"Project Scope","href":"/vulhunt-reference/scopes/project-scope"},{"title":"Functions Scope","description":null,"href":"/vulhunt-reference/scopes/functions-scope"},{"title":"Calls Scope","href":"/vulhunt-reference/scopes/calls-scope"},{"group":"Scopes Result","pages":[{"title":"Overview","description":null,"href":"/vulhunt-reference/scopes/scopes-result/overview"},{"group":"Annotations","pages":[{"title":"Overview","href":"/vulhunt-reference/scopes/scopes-result/annotations/overview"},{"title":"AnnotateAssignment","href":"/vulhunt-reference/scopes/scopes-result/annotations/annotate-assignment"},{"title":"AnnotateAt","href":"/vulhunt-reference/scopes/scopes-result/annotations/annotate-at"},{"title":"AnnotateGlobal","href":"/vulhunt-reference/scopes/scopes-result/annotations/annotate-global"},{"title":"AnnotateOperand","href":"/vulhunt-reference/scopes/scopes-result/annotations/annotate-operand"},{"title":"AnnotatePrototype","href":"/vulhunt-reference/scopes/scopes-result/annotations/annotate-prototype"},{"title":"AnnotateRange","href":"/vulhunt-reference/scopes/scopes-result/annotations/annotate-range"},{"title":"AnnotateVariable","href":"/vulhunt-reference/scopes/scopes-result/annotations/annotate-variable"}]},{"title":"CVSS","href":"/vulhunt-reference/scopes/scopes-result/cvss"},{"title":"Evidence","href":"/vulhunt-reference/scopes/scopes-result/evidence"},{"title":"ProvenanceTable","href":"/vulhunt-reference/scopes/scopes-result/provenance-table"},{"title":"VariantTable","href":"/vulhunt-reference/scopes/scopes-result/variant-table"}]}]},{"group":"Types","pages":[{"title":"AddressValue","href":"/vulhunt-reference/types/address-value"},{"title":"BitVec","href":"/vulhunt-reference/types/bitvec"},{"title":"CallSiteQuery","href":"/vulhunt-reference/types/call-site-query"},{"title":"CalleeAtParam","href":"/vulhunt-reference/types/callee-at-param"},{"title":"CalleeAtTable","href":"/vulhunt-reference/types/callee-at-table"},{"title":"CalleesMatchingParam","href":"/vulhunt-reference/types/callees-matching-param"},{"title":"CalleesMatchingTable","href":"/vulhunt-reference/types/callees-matching-table"},{"title":"CallsFromQuery","href":"/vulhunt-reference/types/calls-from-query"},{"title":"CallsMatchingParam","href":"/vulhunt-reference/types/calls-matching-param"},{"title":"CallsMatchingTable","href":"/vulhunt-reference/types/calls-matching-table"},{"title":"CallsToQuery","href":"/vulhunt-reference/types/calls-to-query"},{"title":"CallSiteContext","href":"/vulhunt-reference/types/callsite-context"},{"title":"CallSiteTable","href":"/vulhunt-reference/types/callsite-table"},{"title":"DecompiledFunction","href":"/vulhunt-reference/types/decompiled-function"},{"title":"FunctionContext","href":"/vulhunt-reference/types/function-context"},{"title":"FunctionQuery","href":"/vulhunt-reference/types/function-query"},{"title":"Instruction","href":"/vulhunt-reference/types/instruction"},{"title":"IRTerm","href":"/vulhunt-reference/types/ir-term"},{"title":"IRTermClassKind","href":"/vulhunt-reference/types/ir-term-class-kind"},{"title":"IRTermKind","href":"/vulhunt-reference/types/ir-term-kind"},{"title":"IRTermSubKind","href":"/vulhunt-reference/types/ir-term-sub-kind"},{"title":"OperandInfo","href":"/vulhunt-reference/types/operand-info"},{"title":"OperandOrigin","href":"/vulhunt-reference/types/operand-origin"},{"title":"PatternMatcher","href":"/vulhunt-reference/types/pattern-matcher"},{"title":"ProjectHandle","href":"/vulhunt-reference/types/project-handle"},{"title":"RegexMatcher","href":"/vulhunt-reference/types/regex-matcher"},{"title":"SearchCodeResult","href":"/vulhunt-reference/types/search-code-result"},{"title":"SyntaxMatchResult","href":"/vulhunt-reference/types/syntax-match-result"}]},{"group":"Standard Library","pages":[{"title":"Overview","href":"/vulhunt-reference/stdlib-extensions/overview"}]}]}]},"basePath":"","title":"Calls Scope - VulHunt rules","buildId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","deploymentId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","dynamics":[],"chunks":[]}