chore(lint): Add lint check for license headers
Added a tslint check to make sure all source files begin with a license header (at the very beginning or after a `#!`). Relates to #9380
This commit is contained in:
parent
e1e5c40ef7
commit
a5f2cc73f6
|
@ -0,0 +1,32 @@
|
||||||
|
import {RuleWalker} from 'tslint/lib/language/walker';
|
||||||
|
import {RuleFailure} from 'tslint/lib/lint';
|
||||||
|
import {AbstractRule} from 'tslint/lib/rules';
|
||||||
|
import * as ts from 'typescript';
|
||||||
|
|
||||||
|
export class Rule extends AbstractRule {
|
||||||
|
public static FAILURE_STRING = 'missing copyright header';
|
||||||
|
|
||||||
|
public apply(sourceFile: ts.SourceFile): RuleFailure[] {
|
||||||
|
const walker = new EnforceCopyrightHeaderWalker(sourceFile, this.getOptions());
|
||||||
|
return this.applyWithWalker(walker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class EnforceCopyrightHeaderWalker extends RuleWalker {
|
||||||
|
private regex: RegExp = /\/\*[\s\S]*?Copyright Google Inc\.[\s\S]*?\*\//;
|
||||||
|
|
||||||
|
public visitSourceFile(node: ts.SourceFile) {
|
||||||
|
// check for a shebang
|
||||||
|
let text = node.getFullText();
|
||||||
|
let offset = 0;
|
||||||
|
if (text.indexOf('#!') === 0) {
|
||||||
|
offset = text.indexOf('\n') + 1;
|
||||||
|
text = text.substring(offset);
|
||||||
|
}
|
||||||
|
// look for the copyright header
|
||||||
|
let match = text.match(this.regex);
|
||||||
|
if (!match || match.index !== 0) {
|
||||||
|
this.addFailure(this.createFailure(offset, offset + 1, Rule.FAILURE_STRING));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
"rules": {
|
"rules": {
|
||||||
"requireInternalWithUnderscore": true,
|
"requireInternalWithUnderscore": true,
|
||||||
"duplicateModuleImport": true,
|
"duplicateModuleImport": true,
|
||||||
|
"enforce-copyright-header": true,
|
||||||
"semicolon": true,
|
"semicolon": true,
|
||||||
"variable-name": [true, "ban-keywords"]
|
"variable-name": [true, "ban-keywords"]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue