forked from palantir/tslint
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New Rule: max-file-line-count (palantir#1360)
- Loading branch information
1 parent
c8ddf95
commit 6202637
Showing
8 changed files
with
126 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
/** | ||
* @license | ||
* Copyright 2013 Palantir Technologies, Inc. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
import * as Lint from "../lint"; | ||
import * as ts from "typescript"; | ||
|
||
export class Rule extends Lint.Rules.AbstractRule { | ||
/* tslint:disable:object-literal-sort-keys */ | ||
public static metadata: Lint.IRuleMetadata = { | ||
ruleName: "max-file-line-count", | ||
description: "Requires files to remain under a certain number of lines", | ||
rationale: Lint.Utils.dedent` | ||
Limiting the number of lines allowed in a file allows files to remain small, | ||
single purpose, and maintainable.`, | ||
optionsDescription: "An integer indicating the maximum number of lines.", | ||
options: { | ||
type: "number", | ||
minimum: "1", | ||
}, | ||
optionExamples: ["[true, 300]"], | ||
type: "maintainability", | ||
}; | ||
/* tslint:enable:object-literal-sort-keys */ | ||
|
||
public static FAILURE_STRING_FACTORY = (lineCount: number, lineLimit: number) => { | ||
let msg = `This file has ${lineCount} lines, which exceeds the maximum of ${lineLimit} lines allowed. `; | ||
msg += `Consider breaking this file up into smaller parts`; | ||
return msg; | ||
}; | ||
|
||
public isEnabled(): boolean { | ||
if (super.isEnabled()) { | ||
const option = this.getOptions().ruleArguments[0]; | ||
if (typeof option === "number" && option > 0) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
} | ||
|
||
public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { | ||
const ruleFailures: Lint.RuleFailure[] = []; | ||
const lineLimit: number = this.getOptions().ruleArguments[0]; | ||
const lineCount: number = sourceFile.getLineStarts().length; | ||
const disabledIntervals = this.getOptions().disabledIntervals; | ||
|
||
if (lineCount > lineLimit && disabledIntervals.length === 0) { | ||
const errorString = Rule.FAILURE_STRING_FACTORY(lineCount, lineLimit); | ||
ruleFailures.push(new Lint.RuleFailure(sourceFile, 0, 1, errorString, this.getOptions().ruleName)); | ||
} | ||
|
||
return ruleFailures; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
namespace App { | ||
~ [This file has 23 lines, which exceeds the maximum of 10 lines allowed. Consider breaking this file up into smaller parts] | ||
class GiveMeANumber { | ||
|
||
/* tslint:disable:no-any */ | ||
private num:any = 10; | ||
/* tslint:enable:no-any */ | ||
|
||
//This is some kind of comment | ||
constructor(){ | ||
this.giveNumber(); | ||
} | ||
|
||
/* | ||
Here is another comment | ||
It's very helpful. | ||
*/ | ||
|
||
public giveNumber = () =>{ | ||
alert(this.num); | ||
}; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"rules": { | ||
"max-file-line-count": [true, 10] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* tslint:disable:max-file-line-count */ | ||
//This file NEEDS to be very long, so we've disabled this rule here | ||
|
||
namespace App { | ||
class GiveMeANumber { | ||
|
||
//THis is a comment about something | ||
private num = 10; | ||
|
||
constructor(){ | ||
this.giveNumber(); | ||
} | ||
|
||
/* | ||
Here is another comment | ||
It's very helpful. | ||
*/ | ||
|
||
public giveNumber = () =>{ | ||
alert(this.num); | ||
}; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"rules": { | ||
"max-file-line-count": [true, 10] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters