Chore: fix some codeql violations (#101958)

* fix some codeql violations

* just check at start
This commit is contained in:
Ashley Harrison
2025-03-14 13:27:25 +00:00
committed by GitHub
parent 399df82f0b
commit 75156324f4
5 changed files with 23 additions and 24 deletions
@@ -293,7 +293,7 @@ export function calculateInterval(range: TimeRange, resolution: number, lowLimit
};
}
const interval_regex = /(-?\d+(?:\.\d+)?)(ms|[Mwdhmsy])/;
const interval_regex = /^(-?\d+(?:\.\d+)?)(ms|[Mwdhmsy])/;
// histogram & trends
const intervals_in_seconds: Record<string, number> = {
y: 31536000,
@@ -47,7 +47,7 @@ export const getMatcherConfig = (
if (byVariable && variable) {
const stringOfNames = variable;
if (/\{.*\}/.test(stringOfNames)) {
if (/^\{.*\}$/.test(stringOfNames)) {
const namesFromString = stringOfNames.slice(1).slice(0, -1).split(',');
return { id: FieldMatcherID.byNames, options: { names: namesFromString } };
}
@@ -3,7 +3,7 @@ import { useDebounce } from 'react-use';
import { InlineField, Input } from '@grafana/ui';
import { validateInterval, validateIntervalRegex } from './validation';
import { validateInterval } from './validation';
interface Props {
value: string;
@@ -28,14 +28,13 @@ interface FieldProps {
}
export const IntervalInput = (props: Props) => {
const validationRegex = props.validationRegex || validateIntervalRegex;
const [intervalIsInvalid, setIntervalIsInvalid] = useState(() => {
return props.value ? validateInterval(props.value, validationRegex) : false;
return props.value ? validateInterval(props.value, props.validationRegex) : false;
});
useDebounce(
() => {
setIntervalIsInvalid(validateInterval(props.value, validationRegex));
setIntervalIsInvalid(validateInterval(props.value, props.validationRegex));
},
500,
[props.value]
@@ -1,28 +1,28 @@
import { validateInterval, validateIntervalRegex } from './validation';
import { validateInterval } from './validation';
describe('Validation', () => {
it('should validate incorrect values correctly', () => {
expect(validateInterval('-', validateIntervalRegex)).toBeTruthy();
expect(validateInterval('1', validateIntervalRegex)).toBeTruthy();
expect(validateInterval('test', validateIntervalRegex)).toBeTruthy();
expect(validateInterval('1ds', validateIntervalRegex)).toBeTruthy();
expect(validateInterval('10Ms', validateIntervalRegex)).toBeTruthy();
expect(validateInterval('-9999999', validateIntervalRegex)).toBeTruthy();
expect(validateInterval('-')).toBeTruthy();
expect(validateInterval('1')).toBeTruthy();
expect(validateInterval('test')).toBeTruthy();
expect(validateInterval('1ds')).toBeTruthy();
expect(validateInterval('10Ms')).toBeTruthy();
expect(validateInterval('-9999999')).toBeTruthy();
});
it('should validate correct values correctly', () => {
expect(validateInterval('1y', validateIntervalRegex)).toBeFalsy();
expect(validateInterval('1M', validateIntervalRegex)).toBeFalsy();
expect(validateInterval('1w', validateIntervalRegex)).toBeFalsy();
expect(validateInterval('1d', validateIntervalRegex)).toBeFalsy();
expect(validateInterval('2h', validateIntervalRegex)).toBeFalsy();
expect(validateInterval('4m', validateIntervalRegex)).toBeFalsy();
expect(validateInterval('8s', validateIntervalRegex)).toBeFalsy();
expect(validateInterval('80ms', validateIntervalRegex)).toBeFalsy();
expect(validateInterval('-80ms', validateIntervalRegex)).toBeFalsy();
expect(validateInterval('1y')).toBeFalsy();
expect(validateInterval('1M')).toBeFalsy();
expect(validateInterval('1w')).toBeFalsy();
expect(validateInterval('1d')).toBeFalsy();
expect(validateInterval('2h')).toBeFalsy();
expect(validateInterval('4m')).toBeFalsy();
expect(validateInterval('8s')).toBeFalsy();
expect(validateInterval('80ms')).toBeFalsy();
expect(validateInterval('-80ms')).toBeFalsy();
});
it('should not return error if no value provided', () => {
expect(validateInterval('', validateIntervalRegex)).toBeFalsy();
expect(validateInterval('')).toBeFalsy();
});
});
@@ -1,6 +1,6 @@
export const validateIntervalRegex = /^(-?\d+(?:\.\d+)?)(ms|[Mwdhmsy])$/;
export const validateInterval = (val: string, regex: RegExp) => {
export const validateInterval = (val: string, regex = validateIntervalRegex) => {
const matches = val.match(regex);
return matches || !val ? false : true;
};