Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 11712x 11712x 11712x 11712x 11712x 35000x 35000x 35000x 35000x 35000x 35000x 35000x 35000x 35000x 35000x 35000x 11712x 11712x 3x 3x 11712x 11712x 11175x 11175x 11712x 11712x 253x 253x 11712x 11712x 277x 277x 277x 277x 68x 68x 209x 277x 5x 3x 3x 3x 3x 5x 209x 209x 209x 11712x 11712x | import {Issue} from "../issue";
import {Class} from "../objects";
import {BasicRuleConfig} from "./_basic_rule_config";
import {ABAPRule} from "./_abap_rule";
import * as Expressions from "../abap/2_statements/expressions";
import {ABAPObject} from "../objects/_abap_object";
import {IRuleMetadata, RuleTag} from "./_irule";
import {ABAPFile} from "../abap/abap_file";
export class TypeFormParametersConf extends BasicRuleConfig {
}
export class TypeFormParameters extends ABAPRule {
private conf = new TypeFormParametersConf();
public getMetadata(): IRuleMetadata {
return {
key: "type_form_parameters",
title: "Type FORM parameters",
shortDescription: `Checks for untyped FORM parameters`,
tags: [RuleTag.SingleFile],
badExample: `FORM foo USING bar.
ENDFORM.`,
goodExample: `FORM foo USING bar TYPE string.
ENDFORM.`,
};
}
private getDescription(parameterName: string): string {
return "Add TYPE for FORM parameter \"" + parameterName + "\"";
}
public getConfig() {
return this.conf;
}
public setConfig(conf: TypeFormParametersConf) {
this.conf = conf;
}
public runParsed(file: ABAPFile, obj: ABAPObject) {
const ret: Issue[] = [];
const stru = file.getStructure();
if (obj instanceof Class || stru === undefined) {
return ret;
}
for (const formparam of stru.findAllExpressions(Expressions.FormParam)) {
if (formparam.findFirstExpression(Expressions.FormParamType) === undefined) {
const token = formparam.getFirstToken();
const issue = Issue.atToken(file, token, this.getDescription(token.getStr()), this.getMetadata().key, this.conf.severity);
ret.push(issue);
}
}
return ret;
}
}
|