]> source.dussan.org Git - sonarqube.git/commitdiff
enable eslint rules to enforce newlines (#3043)
authorStas Vilchik <stas.vilchik@sonarsource.com>
Fri, 9 Feb 2018 12:50:43 +0000 (13:50 +0100)
committerGitHub <noreply@github.com>
Fri, 9 Feb 2018 12:50:43 +0000 (13:50 +0100)
13 files changed:
server/sonar-web/.eslintrc
server/sonar-web/src/main/js/api/metrics.ts
server/sonar-web/src/main/js/app/components/nav/component/__tests__/ComponentNavMenu-test.tsx
server/sonar-web/src/main/js/apps/issues/components/App.js
server/sonar-web/src/main/js/apps/overview/main/Coverage.js
server/sonar-web/src/main/js/apps/overview/main/Duplications.js
server/sonar-web/src/main/js/apps/users/components/PasswordForm.tsx
server/sonar-web/src/main/js/apps/users/components/UserForm.tsx
server/sonar-web/src/main/js/apps/users/components/UserScmAccountInput.tsx
server/sonar-web/src/main/js/apps/users/components/UsersSelectSearch.tsx
server/sonar-web/src/main/js/components/controls/SearchSelect.tsx
server/sonar-web/src/main/js/helpers/measures.ts
server/sonar-web/src/main/js/store/notifications/duck.js

index 16ebf9a4f53f6fded7e733bff48943bb3f9773ee..d03895d0134356332b9e1d04f29059ff8c3700d0 100644 (file)
@@ -88,6 +88,7 @@
     "consistent-this": ["warn", "that"],
     "func-name-matching": "error",
     "func-style": ["warn", "declaration", { "allowArrowFunctions": true }],
+    "lines-between-class-members": ["error", "always", { "exceptAfterSingleLine": true }],
     "max-depth": "warn",
     "max-lines": ["warn", 1000],
     "max-params": ["warn", 4],
     "no-unneeded-ternary": "warn",
     "one-var": ["warn", "never"],
     "operator-assignment": "warn",
+    "padding-line-between-statements": [
+      "error",
+      { "blankLine": "always", "prev": "*", "next": ["class", "function"] },
+      { "blankLine": "always", "prev": ["class", "function"], "next": "*" }
+    ],
 
     // es2015
     "no-duplicate-imports": "error",
index 1dfb0e7789f7d3a35f217a70ef285f9f532344ff..c84d8890aac7d8c8a5a7d411fee982fc81c5f024 100644 (file)
@@ -34,6 +34,7 @@ export function getMetrics(data: { p?: number; ps?: number }): Promise<MetricsRe
 
 export function getAllMetrics(data?: { p?: number; ps?: number }): Promise<Metric[]> {
   return inner(data);
+
   function inner(
     data: { p?: number; ps?: number } = { ps: 500 },
     prev?: MetricsResponse
index 353eb41b50b6cd0b12da000eba6422dbc83df874..eb400536ed1bd86eee415e48dd868502cff38715 100644 (file)
@@ -105,6 +105,7 @@ it('should work for long-living branches', () => {
 it('should work for all qualifiers', () => {
   ['TRK', 'BRC', 'VW', 'SVW', 'APP'].forEach(checkWithQualifier);
   expect.assertions(5);
+
   function checkWithQualifier(qualifier: string) {
     const component = { ...baseComponent, configuration: { showSettings: true }, qualifier };
     expect(
index a4f0a861a957de13e7b32fa5ad29c1174b7caf08..a6068133e9430e56fffe10b46f347ad069bc1a32 100644 (file)
@@ -904,6 +904,7 @@ export default class App extends React.PureComponent {
       </div>
     );
   }
+
   render() {
     const { component } = this.props;
     const { openIssue, paging } = this.state;
index ecc0874352784f4fb6b0ec843a93bf5dbd2da14d..6d800e2a8f6160eae908eda1f6a3d386c5f817e5 100644 (file)
@@ -182,4 +182,5 @@ class Coverage extends React.PureComponent {
     );
   }
 }
+
 export default enhance(Coverage);
index e668ff8efc2b023d94ad8649abc7e3a10a964fe5..3f94296f6b3d8ced2bf683fc00a0b0e282e86fe9 100644 (file)
@@ -171,4 +171,5 @@ class Duplications extends React.PureComponent {
     );
   }
 }
+
 export default enhance(Duplications);
index 053ece8b03de2b3df2843e7aae66bf1d4cfa1322..1caef1c894a05a898a44adb6eae4a4493e49b8b6 100644 (file)
@@ -70,8 +70,10 @@ export default class PasswordForm extends React.PureComponent<Props, State> {
 
   handleConfirmPasswordChange = (event: React.SyntheticEvent<HTMLInputElement>) =>
     this.setState({ confirmPassword: event.currentTarget.value });
+
   handleNewPasswordChange = (event: React.SyntheticEvent<HTMLInputElement>) =>
     this.setState({ newPassword: event.currentTarget.value });
+
   handleOldPasswordChange = (event: React.SyntheticEvent<HTMLInputElement>) =>
     this.setState({ oldPassword: event.currentTarget.value });
 
index 867d503b933e1219fb9dceacd8b506c9f4c5eb98..2cb241d0b1a7c3302f745385b34df7b089528b80 100644 (file)
@@ -91,10 +91,13 @@ export default class UserForm extends React.PureComponent<Props, State> {
 
   handleEmailChange = (event: React.SyntheticEvent<HTMLInputElement>) =>
     this.setState({ email: event.currentTarget.value });
+
   handleLoginChange = (event: React.SyntheticEvent<HTMLInputElement>) =>
     this.setState({ login: event.currentTarget.value });
+
   handleNameChange = (event: React.SyntheticEvent<HTMLInputElement>) =>
     this.setState({ name: event.currentTarget.value });
+
   handlePasswordChange = (event: React.SyntheticEvent<HTMLInputElement>) =>
     this.setState({ password: event.currentTarget.value });
 
index 48db1e71bc040e45de6728b8b8ada9cfebef4640..6f93c423cd209f37a27d6da2463a680b0e20d34b 100644 (file)
@@ -30,6 +30,7 @@ export interface Props {
 export default class UserScmAccountInput extends React.PureComponent<Props> {
   handleChange = (event: React.SyntheticEvent<HTMLInputElement>) =>
     this.props.onChange(this.props.idx, event.currentTarget.value);
+
   handleRemove = () => this.props.onRemove(this.props.idx);
 
   render() {
index 4b605759a8419bfcc9b5b962b861c060f3234854..2d54fee167ca5a562b6cd416504e8d210b8695a4 100644 (file)
@@ -55,6 +55,7 @@ export default class UsersSelectSearch extends React.PureComponent<Props, State>
     this.handleSearch = debounce(this.handleSearch, 250);
     this.state = { searchResult: [], isLoading: false, search: '' };
   }
+
   componentDidMount() {
     this.mounted = true;
     this.handleSearch(this.state.search);
index 07f9b2dac2ade51971a16ae7a43efe753871878c..6d6403c41c243f342392bdc35308c46a5d27cccf 100644 (file)
@@ -68,6 +68,7 @@ export default class SearchSelect extends React.PureComponent<Props, State> {
   get minimumQueryLength() {
     return this.props.minimumQueryLength !== undefined ? this.props.minimumQueryLength : 2;
   }
+
   get resetOnBlur() {
     return this.props.resetOnBlur !== undefined ? this.props.resetOnBlur : true;
   }
index b6354557ad12374b41f93fffc50ebb35dd98abfb..da64a3d66540c1d5db81cd9b60193b1ffcdf2b9e 100644 (file)
@@ -315,6 +315,7 @@ function getRatingGrid(): string {
 }
 
 let maintainabilityRatingGrid: number[];
+
 function getMaintainabilityRatingGrid(): number[] {
   if (maintainabilityRatingGrid) {
     return maintainabilityRatingGrid;
index 8dce9f8895c42651654ec23f38f6d4dd199f7cae..0861944491c13820e9063a9214653168282ee867 100644 (file)
@@ -104,6 +104,7 @@ function onAddNotification(state /*: NotificationsState */, notification /*: Not
   function isNotificationsEqual(a /*: Notification */, b /*: Notification */) {
     return a.channel === b.channel && a.type === b.type && a.project === b.project;
   }
+
   return uniqWith([...state, notification], isNotificationsEqual);
 }