All files / src/rules line_length.ts

95.65% Statements 22/23
75% Branches 3/4
100% Functions 7/7
95.65% Lines 22/23

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  1x 1x 1x 1x   1x   14531x     1x   7266x     21662x                     7008x       115x       132x   132x   132x 866x 866x 866x 2x 864x     864x   2x   132x      
import {ABAPFile} from "../abap/abap_file";
import {Issue} from "../issue";
import {ABAPRule} from "./_abap_rule";
import {BasicRuleConfig} from "./_basic_rule_config";
import {RuleTag} from "./_irule";
 
export class LineLengthConf extends BasicRuleConfig {
  /** Maximum line length in characters, trailing whitespace ignored */
  public length: number = 120;
}
 
export class LineLength extends ABAPRule {
 
  private conf = new LineLengthConf();
 
  public getMetadata() {
    return {
      key: "line_length",
      title: "Line length",
      shortDescription: `Detects lines exceeding the provided maximum length.`,
      extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#stick-to-a-reasonable-line-length
https://docs.abapopenchecks.org/checks/04/`,
      tags: [RuleTag.Styleguide, RuleTag.SingleFile],
    };
  }
 
  public getConfig() {
    return this.conf;
  }
 
  public setConfig(conf: LineLengthConf) {
    this.conf = conf;
  }
 
  public runParsed(file: ABAPFile) {
    const issues: Issue[] = [];
    // maximum line length in abap files
    const maxLineLength: number = 255;
 
    file.getRawRows().forEach((row, rowIndex) => {
      row = row.replace("\r", "");
      let message = "";
      if (row.length > maxLineLength) {
        message = `Maximum allowed line length of ${maxLineLength} exceeded, currently  ${row.length}`;
      } else Iif (row.length > this.conf.length) {
        message = `Reduce line length to max ${this.conf.length}, currently ${row.length}`;
      } else {
        return;
      }
      issues.push(Issue.atRow(file, rowIndex + 1, message, this.getMetadata().key, this.conf.severity));
    });
    return issues;
  }
 
}