feat(sonar): Initial SonarJS plugin
Signed-off-by: Valentin Popov <info@valentineus.link>
This commit is contained in:
		
							
								
								
									
										28
									
								
								ROADMAP.md
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								ROADMAP.md
									
									
									
									
									
								
							@@ -340,6 +340,34 @@
 | 
				
			|||||||
- [ ] "detect-pseudoRandomBytes"
 | 
					- [ ] "detect-pseudoRandomBytes"
 | 
				
			||||||
- [ ] "detect-unsafe-regex"
 | 
					- [ ] "detect-unsafe-regex"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## SonarJS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- [ ] "cognitive-complexity"
 | 
				
			||||||
 | 
					- [ ] "max-switch-cases"
 | 
				
			||||||
 | 
					- [ ] "no-all-duplicated-branches"
 | 
				
			||||||
 | 
					- [ ] "no-collapsible-if"
 | 
				
			||||||
 | 
					- [ ] "no-collection-size-mischeck"
 | 
				
			||||||
 | 
					- [ ] "no-duplicate-string"
 | 
				
			||||||
 | 
					- [ ] "no-duplicated-branches"
 | 
				
			||||||
 | 
					- [ ] "no-element-overwrite"
 | 
				
			||||||
 | 
					- [ ] "no-extra-arguments"
 | 
				
			||||||
 | 
					- [ ] "no-identical-conditions"
 | 
				
			||||||
 | 
					- [ ] "no-identical-expressions"
 | 
				
			||||||
 | 
					- [ ] "no-identical-functions"
 | 
				
			||||||
 | 
					- [ ] "no-inverted-boolean-check"
 | 
				
			||||||
 | 
					- [ ] "no-one-iteration-loop"
 | 
				
			||||||
 | 
					- [ ] "no-redundant-boolean"
 | 
				
			||||||
 | 
					- [ ] "no-redundant-jump"
 | 
				
			||||||
 | 
					- [ ] "no-same-line-conditional"
 | 
				
			||||||
 | 
					- [ ] "no-small-switch"
 | 
				
			||||||
 | 
					- [ ] "no-unused-collection"
 | 
				
			||||||
 | 
					- [ ] "no-use-of-empty-return-value"
 | 
				
			||||||
 | 
					- [ ] "no-useless-catch"
 | 
				
			||||||
 | 
					- [ ] "prefer-immediate-return"
 | 
				
			||||||
 | 
					- [ ] "prefer-object-literal"
 | 
				
			||||||
 | 
					- [ ] "prefer-single-boolean-return"
 | 
				
			||||||
 | 
					- [ ] "prefer-while"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## TypeScript
 | 
					## TypeScript
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] "adjacent-overload-signatures"
 | 
					- [ ] "adjacent-overload-signatures"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@
 | 
				
			|||||||
    "eslint": "^6.8.0",
 | 
					    "eslint": "^6.8.0",
 | 
				
			||||||
    "eslint-plugin-import": "^2.20.1",
 | 
					    "eslint-plugin-import": "^2.20.1",
 | 
				
			||||||
    "eslint-plugin-security": "^1.4.0",
 | 
					    "eslint-plugin-security": "^1.4.0",
 | 
				
			||||||
 | 
					    "eslint-plugin-sonarjs": "^0.5.0",
 | 
				
			||||||
    "rollup": "^1.31.1",
 | 
					    "rollup": "^1.31.1",
 | 
				
			||||||
    "rollup-plugin-terser": "^5.2.0",
 | 
					    "rollup-plugin-terser": "^5.2.0",
 | 
				
			||||||
    "tslib": "^1.10.0",
 | 
					    "tslib": "^1.10.0",
 | 
				
			||||||
@@ -28,7 +29,8 @@
 | 
				
			|||||||
    "@typescript-eslint/parser": "^2.19.0",
 | 
					    "@typescript-eslint/parser": "^2.19.0",
 | 
				
			||||||
    "eslint": "^6.8.0",
 | 
					    "eslint": "^6.8.0",
 | 
				
			||||||
    "eslint-plugin-import": "^2.20.1",
 | 
					    "eslint-plugin-import": "^2.20.1",
 | 
				
			||||||
    "eslint-plugin-security": "^1.4.0"
 | 
					    "eslint-plugin-security": "^1.4.0",
 | 
				
			||||||
 | 
					    "eslint-plugin-sonarjs": "^0.5.0"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "dependencies": {}
 | 
					  "dependencies": {}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
import rDefault from "./rules/default.json";
 | 
					import rDefault from "./rules/default.json";
 | 
				
			||||||
import rImport from "./rules/import.json";
 | 
					import rImport from "./rules/import.json";
 | 
				
			||||||
import rSecurity from "./rules/security.json";
 | 
					import rSecurity from "./rules/security.json";
 | 
				
			||||||
 | 
					import rSonarJS from "./rules/sonarjs.json";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = {
 | 
					module.exports = {
 | 
				
			||||||
	"extends": [
 | 
						"extends": [
 | 
				
			||||||
@@ -9,14 +10,17 @@ module.exports = {
 | 
				
			|||||||
		"plugin:import/recommended",
 | 
							"plugin:import/recommended",
 | 
				
			||||||
		"plugin:import/warnings",
 | 
							"plugin:import/warnings",
 | 
				
			||||||
		"plugin:security/recommended",
 | 
							"plugin:security/recommended",
 | 
				
			||||||
 | 
							"plugin:sonarjs/recommended",
 | 
				
			||||||
	],
 | 
						],
 | 
				
			||||||
	"plugins": [
 | 
						"plugins": [
 | 
				
			||||||
		"import",
 | 
							"import",
 | 
				
			||||||
		"security",
 | 
							"security",
 | 
				
			||||||
 | 
							"sonarjs",
 | 
				
			||||||
	],
 | 
						],
 | 
				
			||||||
	"rules": {
 | 
						"rules": {
 | 
				
			||||||
		...rDefault,
 | 
							...rDefault,
 | 
				
			||||||
		...rImport,
 | 
							...rImport,
 | 
				
			||||||
		...rSecurity,
 | 
							...rSecurity,
 | 
				
			||||||
 | 
							...rSonarJS,
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								src/rules/sonarjs.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/rules/sonarjs.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					{}
 | 
				
			||||||
@@ -393,6 +393,11 @@ eslint-plugin-security@^1.4.0:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    safe-regex "^1.1.0"
 | 
					    safe-regex "^1.1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eslint-plugin-sonarjs@^0.5.0:
 | 
				
			||||||
 | 
					  version "0.5.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.5.0.tgz#ce17b2daba65a874c2862213a9e38e8986ad7d7d"
 | 
				
			||||||
 | 
					  integrity sha512-XW5MnzlRjhXpIdbULC/qAdJYHWw3rRLws/DyawdlPU/IdVr9AmRK1r2LaCvabwKOAW2XYYSo3kDX58E4MrB7PQ==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eslint-scope@^5.0.0:
 | 
					eslint-scope@^5.0.0:
 | 
				
			||||||
  version "5.0.0"
 | 
					  version "5.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
 | 
					  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user