ESLint 规则在 Angular 中排除某些关键字和短语?

Posted

技术标签:

【中文标题】ESLint 规则在 Angular 中排除某些关键字和短语?【英文标题】:ESLint Rule to Exclude Certain Keywords and Phrases in Angular? 【发布时间】:2020-04-09 07:12:10 【问题描述】:

如果人们使用某些“关键字/短语”,我需要编写一个 Angular Typescript 规则来警告他们。 例如,如果关键字“Birthdate”或“SSN”直接在源文件中,它应该给出警告。

有人会如何编写这条规则来限制使用 ESLint 的单词?

目前正在研究,在***文章搜索存档中没有看到任何文章,

好奇如何操作下面的示例代码或(对任何其他解决方案开放),

我在“id-blacklist”下面应用了以下内容:[“SSN”,“Birthdate”],接收错误

https://eslint.org/docs/rules/id-blacklist

module.exports = 
    "env": 
        "browser": true,
        "es6": true
    ,
    "extends": [
        "eslint:recommended",
        "plugin:@typescript-eslint/eslint-recommended"
    ],
    "globals": 
        "Atomics": "readonly",
        "SharedArrayBuffer": "readonly"
    ,
    "parser": "@typescript-eslint/parser",
    "parserOptions": 
        "ecmaVersion": 2018,
        "sourceType": "module"
    ,
    "plugins": [
        "@typescript-eslint"
    ],
    "rules": 
        "id-blacklist": ["SSN","Birthdate"]
    
;

错误:

规则“id-blacklist”的配置无效:严重性应为以下之一:0 = 关闭、1 = 警告、2 = 错误

其他资源:

https://rangle.io/blog/custom-tslint-for-angular/

https://medium.com/@andrey.igorevich.borisov/writing-custom-tslint-rules-from-scratch-62e7f0237124

【问题讨论】:

嗯...您不认为 git pre-commit 挂钩可能是更好的选择吗? TSLint 不是被弃用了吗? 嗨@JaredSmith,我们的代码中已经有这样的示例,希望标记为警告 【参考方案1】:

'no-restricted-syntax': [
      'error',
      'Literal[value=/^(special|zzz|xxx)$/i]',
      'BinaryExpression[right.value = /^(special|zzz|xxx)$/i]',
    ],

这条规则对我有用,我的要求是我们不希望某些密钥成为 repo 中的硬代码。

如果您的代码如下所示,则会显示错误:

const t = 
    pp: 'special',
;

const tt = 'special',

const f = (arg) => 
  return arg === 'special';


function ff(arg) 
  return arg === 'special';

【讨论】:

【参考方案2】:

我通过管道检查完成了它,但您可以使用预提交,如下所示: Is it possible to ban a list of words with ESlint or anything else when pre-commit?

你可以像这样使用 ESlint [TSlint is deprecated] 来做到这一点: https://eslint.org/docs/rules/id-blacklist

【讨论】:

嗨,不要试图阻止预先提交,我希望它允许,只是警告 寻找编码示例,这有帮助 因此,如果对您有帮助,您可以查看第二个解决方案,请点赞并标记为答案。

以上是关于ESLint 规则在 Angular 中排除某些关键字和短语?的主要内容,如果未能解决你的问题,请参考以下文章

ESLint:在 angularjs 应用程序中使用推荐的默认规则

使 ESLint 仅将规则应用于某些文件名模式

如何在 Angular cli 中忽略/排除某些文件/目录

在 Angular 项目提交期间运行 ESLint

升级到 ESLint 时导入错误以定义规则

允许调试器;某些文件中的语句,使用 ESLint