Skip to content

Commit fbfd9d9

Browse files
encXpdujtipiya
and
pdujtipiya
authored
Handle all possible NaN and return undefined instead (#154)
Co-authored-by: pdujtipiya <[email protected]>
1 parent c7c9102 commit fbfd9d9

6 files changed

+28
-8
lines changed

src/Parser/DartLintParser.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { LintItem } from './@types';
33
import { LintSeverity } from './@enums/LintSeverity';
44
import { splitByLine } from './utils/lineBreak.util';
55
import { ProjectType } from '../Config/@enums';
6+
import { NoNaN } from './utils/number.util';
67

78
export class DartLintParser extends Parser {
89
parse(content: string): LintItem[] {
@@ -23,8 +24,8 @@ export class DartLintParser extends Parser {
2324
return {
2425
ruleId: log,
2526
log: log,
26-
line: Number(line),
27-
lineOffset: Number(offset),
27+
line: NoNaN(line),
28+
lineOffset: NoNaN(offset),
2829
msg: message,
2930
source: source,
3031
severity: DartLintParser.stringToSeverity(severityText),

src/Parser/DotnetBuildParser.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ describe('DotnetBuildParser tests', () => {
3535
ruleId: 'CS5001',
3636
source: `Broken.csproj`,
3737
severity: LintSeverity.error,
38-
line: NaN,
39-
lineOffset: NaN,
38+
line: undefined,
39+
lineOffset: undefined,
4040
msg: `CS5001: Program does not contain a static 'Main' method suitable for an entry point`,
4141
log: logWithNoSource,
4242
valid: false,

src/Parser/DotnetBuildParser.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { LintItem } from './@types';
88
import { mapSeverity } from './utils/dotnetSeverityMap';
99
import { splitByLine } from './utils/lineBreak.util';
1010
import { ProjectType } from '../Config/@enums';
11+
import { NoNaN } from './utils/number.util';
1112

1213
export class DotnetBuildParser extends Parser {
1314
parse(content: string): LintItem[] {
@@ -48,8 +49,8 @@ export class DotnetBuildParser extends Parser {
4849
return {
4950
ruleId: errorCode,
5051
log,
51-
line: Number(_line),
52-
lineOffset: Number(_lineOffset),
52+
line: NoNaN(_line),
53+
lineOffset: NoNaN(_lineOffset),
5354
msg: `${errorCode.trim()}: ${content.trim()}`,
5455
source: relativeSrcPath ?? basename(slash(_csproj)),
5556
severity: mapSeverity(severityText),

src/Parser/MSBuildParser.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { LintItem } from './@types';
88
import { mapSeverity } from './utils/dotnetSeverityMap';
99
import { splitByLine } from './utils/lineBreak.util';
1010
import { ProjectType } from '../Config/@enums';
11+
import { NoNaN } from './utils/number.util';
1112

1213
export class MSBuildParser extends Parser {
1314
parse(content: string): LintItem[] {
@@ -46,8 +47,8 @@ export class MSBuildParser extends Parser {
4647
return {
4748
ruleId: code,
4849
log,
49-
line: Number(_line),
50-
lineOffset: Number(_lineOffset),
50+
line: NoNaN(_line),
51+
lineOffset: NoNaN(_lineOffset),
5152
msg: `${code.trim()}: ${content.trim()}`,
5253
source: fileRelativePath ?? fileFullPath,
5354
severity: mapSeverity(severityText),

src/Parser/utils/number.util.spec.ts

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { NoNaN } from './number.util';
2+
3+
describe('NoNaN', () => {
4+
it('should return number when provided a number string', () => {
5+
const result = NoNaN('69');
6+
expect(result).toBe(69);
7+
});
8+
9+
it('should return undefined when provided NaN string', () => {
10+
const result = NoNaN('this is NaN for sure');
11+
expect(result).toBeUndefined();
12+
});
13+
});

src/Parser/utils/number.util.ts

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export function NoNaN(nStr: string): number | undefined {
2+
const result = Number(nStr);
3+
return isNaN(result) ? undefined : result;
4+
}

0 commit comments

Comments
 (0)