From b85cd9eeed362a329deaf5dcf5ff4b2aa642db37 Mon Sep 17 00:00:00 2001 From: Babis Kanellopoulos Date: Thu, 12 Jan 2023 12:03:57 +0200 Subject: [PATCH 1/3] docs: include dynamic styles in docs --- docs/rules/no-unused-styles.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/rules/no-unused-styles.md b/docs/rules/no-unused-styles.md index dca7578..86b8225 100644 --- a/docs/rules/no-unused-styles.md +++ b/docs/rules/no-unused-styles.md @@ -95,6 +95,23 @@ const Hello = React.createClass({ } }); ``` + +Dynamic styles are marked as used only if you use a local variable with the same name as the variable in the actual component . + +```js +const getStyles = () => { + const styles = StyleSheet.create({ + name: {} + }) + return styles; +} +const Hello = React.createClass({ + render: function() { + const styles = getStyles(); + return Hello {this.props.name}; + } +}); +``` Rules are also marked as used when they are used in tags that contain the word `style`. ```js From d63910c0393495224dd7e30334c4ba598022bdd7 Mon Sep 17 00:00:00 2001 From: Babis Kanellopoulos Date: Thu, 12 Jan 2023 12:09:14 +0200 Subject: [PATCH 2/3] chore: update unit tests with dynamic stylesheet cases --- tests/lib/rules/no-unused-styles.js | 50 +++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/tests/lib/rules/no-unused-styles.js b/tests/lib/rules/no-unused-styles.js index f716639..cb579a8 100644 --- a/tests/lib/rules/no-unused-styles.js +++ b/tests/lib/rules/no-unused-styles.js @@ -31,6 +31,21 @@ const tests = { } }); `, + }, { + code: ` + const getStyles = () => { + const styles = StyleSheet.create({ + name: {} + }) + return styles; + } + const Hello = React.createClass({ + render: function() { + const styles = getStyles(); + return Hello {this.props.name}; + } + }); + `, }, { code: ` const Hello = React.createClass({ @@ -231,6 +246,41 @@ const tests = { errors: [{ message: 'Unused style detected: styles.text', }], + }, { + code: ` + const getStyles = () => { + const styles = StyleSheet.create({ + name: {} + }) + return styles + } + const Hello = React.createClass({ + render: function() { + const globalStyles = getStyles(); + return Hello {this.props.name}; + } + }); + `, + errors: [{ + message: 'Unused style detected: styles.name', + }], + }, { + code: ` + const getStyles = () => { + return StyleSheet.create({ + name: {} + }) + } + const Hello = React.createClass({ + render: function() { + const globalStyles = getStyles(); + return Hello {this.props.name}; + } + }); + `, + errors: [{ + message: 'Unused style detected: undefined.name', + }], }, { code: ` const styles = StyleSheet.create({ From 3bb1442f0974c154033dcc404f53873435062944 Mon Sep 17 00:00:00 2001 From: Babis Kanellopoulos Date: Thu, 12 Jan 2023 12:27:28 +0200 Subject: [PATCH 3/3] fix: remove sonarcloud duplication warning --- tests/lib/rules/no-unused-styles.js | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/tests/lib/rules/no-unused-styles.js b/tests/lib/rules/no-unused-styles.js index cb579a8..b2594bd 100644 --- a/tests/lib/rules/no-unused-styles.js +++ b/tests/lib/rules/no-unused-styles.js @@ -249,37 +249,19 @@ const tests = { }, { code: ` const getStyles = () => { - const styles = StyleSheet.create({ - name: {} + return OtherStyleSheet.create({ + text: {} }) - return styles } - const Hello = React.createClass({ - render: function() { - const globalStyles = getStyles(); - return Hello {this.props.name}; - } - }); - `, - errors: [{ - message: 'Unused style detected: styles.name', - }], - }, { - code: ` - const getStyles = () => { - return StyleSheet.create({ - name: {} - }) - } - const Hello = React.createClass({ + const Hi = React.createClass({ render: function() { const globalStyles = getStyles(); - return Hello {this.props.name}; + return Hi {this.props.name}; } }); `, errors: [{ - message: 'Unused style detected: undefined.name', + message: 'Unused style detected: undefined.text', }], }, { code: `