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 63 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 12078x 12078x 12078x 12078x 12078x 105309x 105309x 105309x 105309x 105309x 105309x 105309x 105309x 105309x 105309x 105309x 105309x 12078x 12078x 11536x 11536x 12078x 12078x 255x 255x 12078x 12078x 278x 278x 278x 278x 278x 278x 54x 52x 52x 2x 2x 2x 2x 2x 2x 278x 278x 278x 12078x 12078x | import {Issue} from "../issue";
import {ABAPRule} from "./_abap_rule";
import * as Expressions from "../abap/2_statements/expressions";
import {BasicRuleConfig} from "./_basic_rule_config";
import {IRuleMetadata, RuleTag} from "./_irule";
import {LanguageVersion, Release, releaseAtLeast} from "../version";
import {EditHelper} from "../edit_helper";
import {ABAPFile} from "../abap/abap_file";
export class PreferXsdboolConf extends BasicRuleConfig {
}
export class PreferXsdbool extends ABAPRule {
private conf = new PreferXsdboolConf();
public getMetadata(): IRuleMetadata {
return {
key: "prefer_xsdbool",
title: "Prefer xsdbool over boolc",
shortDescription: `Prefer xsdbool over boolc`,
extendedInformation: `Activates if language version is v740sp08 or above.
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-xsdbool-to-set-boolean-variables`,
tags: [RuleTag.Styleguide, RuleTag.Upport, RuleTag.Quickfix, RuleTag.SingleFile],
badExample: `DATA(sdf) = boolc( 1 = 2 ).`,
goodExample: `DATA(sdf) = xsdbool( 1 = 2 ).`,
};
}
public getConfig() {
return this.conf;
}
public setConfig(conf: PreferXsdboolConf) {
this.conf = conf;
}
public runParsed(file: ABAPFile): Issue[] {
const issues: Issue[] = [];
if (!releaseAtLeast(this.reg.getConfig().getRelease(), Release.v740sp08)
&& this.reg.getConfig().getLanguageVersion() !== LanguageVersion.Cloud) {
return [];
}
for (const s of file.getStructure()?.findAllExpressions(Expressions.Source) || []) {
if (s.concatTokens().toUpperCase().startsWith("BOOLC( ") === false) {
continue;
}
const token = s.getFirstToken();
const message = "Prefer xsdbool over boolc";
const fix = EditHelper.replaceToken(file, token, "xsdbool");
issues.push(Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity, fix));
}
return issues;
}
}
|