diff --git a/javascript/ql/src/semmle/javascript/frameworks/ReactNative.qll b/javascript/ql/src/semmle/javascript/frameworks/ReactNative.qll new file mode 100644 index 00000000000..8d554bf55f1 --- /dev/null +++ b/javascript/ql/src/semmle/javascript/frameworks/ReactNative.qll @@ -0,0 +1,16 @@ +/** + * Provides classes for working with [React Native](https://facebook.github.io/react-native) code. + */ + +import javascript + +module ReactNative { + /** A `WebView` JSX element. */ + class WebViewElement extends DataFlow::ValueNode, DataFlow::DefaultSourceNode { + override JSXElement astNode; + + WebViewElement() { + DataFlow::moduleMember("react-native", "WebView").flowsToExpr(astNode.getNameExpr()) + } + } +} diff --git a/javascript/ql/test/library-tests/frameworks/ReactNative/WebView.expected b/javascript/ql/test/library-tests/frameworks/ReactNative/WebView.expected new file mode 100644 index 00000000000..52f25858228 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/ReactNative/WebView.expected @@ -0,0 +1 @@ +| webview.js:6:12:6:56 | | diff --git a/javascript/ql/test/library-tests/frameworks/ReactNative/WebView.ql b/javascript/ql/test/library-tests/frameworks/ReactNative/WebView.ql new file mode 100644 index 00000000000..5d4d0ce0ea6 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/ReactNative/WebView.ql @@ -0,0 +1,4 @@ +import javascript + +from ReactNative::WebViewElement wv +select wv diff --git a/javascript/ql/test/library-tests/frameworks/ReactNative/webview.js b/javascript/ql/test/library-tests/frameworks/ReactNative/webview.js new file mode 100644 index 00000000000..462cbdeec4a --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/ReactNative/webview.js @@ -0,0 +1,8 @@ +import { Component } from 'react'; +import { WebView } from 'react-native'; + +class LgtmView extends Component { + render() { + return ; + } +}