Skip to content

Commit a684943

Browse files
committed
JS: Model mobx-react{-lite} as higher-order component builders
1 parent a0099d6 commit a684943

File tree

3 files changed

+6
-2
lines changed

3 files changed

+6
-2
lines changed

javascript/ql/lib/semmle/javascript/frameworks/React.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -802,6 +802,8 @@ private DataFlow::SourceNode higherOrderComponentBuilder() {
802802
or
803803
result = DataFlow::moduleMember("recompose", _).getACall()
804804
or
805+
result = DataFlow::moduleMember(["mobx-react", "mobx-react-lite"], "observer")
806+
or
805807
result = reactRouterDom().getAPropertyRead("withRouter")
806808
or
807809
exists(FunctionCompositionCall compose |

javascript/ql/test/library-tests/frameworks/ReactJS/tests.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ getACandidatePropsValue
1010
| props.js:30:46:30:67 | "propFr ... tProps" |
1111
| props.js:32:22:32:34 | "propFromJSX" |
1212
| props.js:34:33:34:53 | "propFr ... ructor" |
13+
| useHigherOrderComponent.jsx:5:33:5:37 | "red" |
14+
| useHigherOrderComponent.jsx:11:39:11:44 | "lazy" |
1315
| useHigherOrderComponent.jsx:17:40:17:46 | "lazy2" |
1416
getACandidateStateSource
1517
| es6.js:14:1:20:1 | class H ... }\\n} | es6.js:18:22:18:31 | { baz: 42} |

javascript/ql/test/library-tests/frameworks/ReactJS/useHigherOrderComponent.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import SomeComponent from './higherOrderComponent';
22
import { lazy } from 'react';
33

44
function foo() {
5-
return <SomeComponent color="red"/> // $ MISSING: getACandidatePropsValue
5+
return <SomeComponent color="red"/> // $ getACandidatePropsValue
66
}
77

88
const LazyLoadedComponent = lazy(() => import('./higherOrderComponent'));
99

1010
function bar() {
11-
return <LazyLoadedComponent color="lazy"/> // $ MISSING: getACandidatePropsValue
11+
return <LazyLoadedComponent color="lazy"/> // $ getACandidatePropsValue
1212
}
1313

1414
const LazyLoadedComponent2 = lazy(() => import('./exportedComponent').then(m => m.MyComponent));

0 commit comments

Comments
 (0)