@quintaaa/eslint-plugin-starlims
Version:
Eslint plugin to parse and lint starlims form code successfully
82 lines (61 loc) • 3.28 kB
Markdown
# Starlims ESLint Plugin
This plugin provides custom rules for Starlims.
## How to use
### Installation
- Create a new project with `npm init` in the root folder of your Starlims project
- Install ESLint and the plugin with npm: `npm install eslint @quintaaa/eslint-plugin-starlims --save-dev`
- Create a new file named `eslint.config.js` in the root folder of your Starlims project
- Add the following content to the file:
```js
const starlims = require('@quintaaa/eslint-plugin-starlims');
module.exports = [
starlims.configs.recommended,
{
rules: {
// Here is an example of the rules I use
'prefer-const': 'warn',
'no-var': 'warn',
'no-else-return': 'warn',
'no-mixed-spaces-and-tabs': 'off',
// Add your own rules here
// ...
// To edit the plugin default rules, use the following syntax
// The list of rules can be found in in the readme file of the plugin
'starlims/no-synchronous-requests': 'warn',
},
},
];
```
You can customize your ESLint configuration as you wish. For more information, please refer to the [ESLint documentation](https://eslint.org/docs/user-guide/configuring).
You should now be able to use the plugin in your Starlims project.
### Usage
Use the following command to lint your Starlims project:
```bash
npx eslint .
```
You can also install the ESLint extension for Visual Studio Code to get real-time linting. [ESLint extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
## List of customizations
- Do not create parsing errors for `#include` statements
- Do not report undefined variables for client script functions starting with `cs` (e.g. `csLoadCrossTab`)
- Do not report defined but unused variables for event handlers functions (e.g. `Form1_OnLoad`, `Form1_OnClose`, `dataGrid1_OnRowChange`, `btnOk_OnClick`)
- Allow usage of common Starlims global variables such as:
- form
- lims
- Shell
- Starlims
- Dialogs
- and more...
- Rules
- starlims/no-synchronous-requests --> Reports the usage of functions that are UI blocking and should be avoided (e.g. `lims.CallServer`, `lims.GetDataSet`)
- starlims/check-server-functions --> Checks the syntax of server functions such as `lims.CallServer` and `lims.GetDataSet` etc. Also check the syntax of `#include` statements
- starlims/check-unconverted-functions --> Reports the usage of XFD functions that haven't been converted to html (e.g. `lims.AAdd`, `Convert.ToInt32`)
- starlims/requests-in-loop --> Reports the usage of requests in loops (e.g. `for`, `while`, `do...while`, `foreach` etc.)
- starlims/no-ambiguous-vars --> Reports the usage of ambiguous variables (e.g. `navigator` instead of `Starlims.navigator` or `window.navigator`)
- starlims/remove-debugger --> Reports the usage of debugger statements and removes them on autofix
## Contributing
Any contributions are welcome. Please follow the steps below to contribute:
- Fork the repository
- Create a new branch
- Make your changes
- Create a pull request
If you have any questions or suggestions, please contact me at <quentin.vauthier@starlims.com> or create an issue.