PageSourceSearch

https://fbinfer.com/assets/js/556d04db.3e51ef1b.js

js fbinfer.com collected 2026-09-24 17:58:04 UTC 3,583 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunk=globalThis.webpackChunk||[]).push([[9677],{9509(e,t,s){s.r(t),s.d(t,{assets:()=>r,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"checker-scope-leakage","title":"Scope Leakage","description":"The Java/Kotlin checker takes into account a set of \\"scope\\" annotations and a must-not-hold relation over the scopes. The checker raises an alarm if there exists a field access path from object A to object B, with respective scopes SA and SB, such that must-not-hold(SA, SB).","source":"@site/docs/checker-scope-leakage.md","sourceDirName":".","slug":"/checker-scope-leakage","permalink":"/docs/next/checker-scope-leakage","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Scope Leakage","description":"The Java/Kotlin checker takes into account a set of \\"scope\\" annotations and a must-not-hold relation over the scopes. The checker raises an alarm if there exists a field access path from object A to object B, with respective scopes SA and SB, such that must-not-hold(SA, SB)."},"sidebar":"docs","previous":{"title":"Static Initialization Order Fiasco","permalink":"/docs/next/checker-siof"},"next":{"title":"Self in Block","permalink":"/docs/next/checker-self-in-block"}}');var n=s(4848),c=s(8453);const a={title:"Scope Leakage",description:'The Java/Kotlin checker takes into account a set of "scope" annotations and a must-not-hold relation over the scopes. The checker raises an alarm if there exists a field access path from object A to object B, with respective scopes SA and SB, such that must-not-hold(SA, SB).'},i=void 0,r={},l=[{value:"List of Issue Types",id:"list-of-issue-types",level:2}];function h(e){const t={a:"a",code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...(0,c.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:'The Java/Kotlin checker takes into account a set of "scope" annotations and a must-not-hold relation over the scopes. The checker raises an alarm if there exists a field access path from object A to object B, with respective scopes SA and SB, such that must-not-hold(SA, SB).'}),"\n",(0,n.jsxs)(t.p,{children:["Activate with ",(0,n.jsx)(t.code,{children:"--scope-leakage"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"Supported languages:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"C/C++/ObjC: No"}),"\n",(0,n.jsx)(t.li,{children:"C#/.Net: No"}),"\n",(0,n.jsx)(t.li,{children:"Erlang: No"}),"\n",(0,n.jsx)(t.li,{children:"Hack: No"}),"\n",(0,n.jsx)(t.li,{children:"Java: Yes"}),"\n",(0,n.jsx)(t.li,{children:"Python: No"}),"\n",(0,n.jsx)(t.li,{children:"Rust: No"}),"\n",(0,n.jsx)(t.li,{children:"Swift: No"}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"list-of-issue-types",children:"List of Issue Types"}),"\n",(0,n.jsx)(t.p,{children:"The following issue types are reported by this checker:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/next/all-issue-types#scope_leakage",children:"SCOPE_LEAKAGE"})}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},8453(e,t,s){s.d(t,{R:()=>a,x:()=>i});var o=s(6540);const n={},c=o.createContext(n);function a(e){const t=o.useContext(c);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),o.createElement(c.Provider,{value:t},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.