@abaplint/cli 2.119.40 → 2.119.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/build/cli.js +119 -8
  2. package/package.json +3 -3
package/build/cli.js CHANGED
@@ -54066,8 +54066,8 @@ var __importStar = (this && this.__importStar) || (function () {
54066
54066
  };
54067
54067
  })();
54068
54068
  Object.defineProperty(exports, "__esModule", ({ value: true }));
54069
- exports.Rename = exports.PrettyPrinter = exports.Position = exports.CurrentScope = exports.RulesRunner = exports.SpaghettiScope = exports.SyntaxLogic = exports.ABAPObject = exports.Tokens = exports.ExpressionsCDS = exports.CDSParser = exports.LanguageServerTypes = exports.DDLParser = exports.AbstractFile = exports.ABAPFile = exports.MemoryFile = exports.Edits = exports.ReferenceType = exports.NativeSQL = exports.MacroContent = exports.MacroCall = exports.SpaghettiScopeNode = exports.Token = exports.ScopeType = exports.BasicTypes = exports.TypedIdentifier = exports.AbstractType = exports.VirtualPosition = exports.Comment = exports.Unknown = exports.Empty = exports.Identifier = exports.Nodes = exports.Types = exports.Expressions = exports.Statements = exports.Structures = exports.SkipLogic = exports.Objects = exports.ArtifactsRules = exports.ArtifactsObjects = exports.ArtifactsABAP = exports.BuiltIn = exports.MethodLengthStats = exports.LanguageServer = exports.Registry = exports.CyclomaticComplexityStats = exports.Version = exports.Config = exports.Issue = void 0;
54070
- exports.LSPEdit = exports.RuleTag = exports.Severity = exports.Visibility = exports.Info = exports.Diagnostics = void 0;
54069
+ exports.Position = exports.CurrentScope = exports.RulesRunner = exports.SpaghettiScope = exports.SyntaxLogic = exports.ABAPObject = exports.Tokens = exports.ExpressionsCDS = exports.CDSParser = exports.LanguageServerTypes = exports.DDLParser = exports.AbstractFile = exports.ABAPFile = exports.MemoryFile = exports.Edits = exports.ReferenceType = exports.NativeSQL = exports.MacroContent = exports.MacroCall = exports.SpaghettiScopeNode = exports.Token = exports.ScopeType = exports.BasicTypes = exports.TypedIdentifier = exports.AbstractType = exports.VirtualPosition = exports.Comment = exports.Unknown = exports.Empty = exports.Identifier = exports.Nodes = exports.Types = exports.Expressions = exports.Statements = exports.Structures = exports.SkipLogic = exports.Objects = exports.ArtifactsRules = exports.ArtifactsObjects = exports.ArtifactsABAP = exports.BuiltIn = exports.FormLengthStats = exports.FunctionLengthStats = exports.MethodLengthStats = exports.LanguageServer = exports.Registry = exports.CyclomaticComplexityStats = exports.Version = exports.Config = exports.Issue = void 0;
54070
+ exports.LSPEdit = exports.RuleTag = exports.Severity = exports.Visibility = exports.Info = exports.Diagnostics = exports.Rename = exports.PrettyPrinter = void 0;
54071
54071
  const issue_1 = __webpack_require__(/*! ./issue */ "../core/build/src/issue.js");
54072
54072
  Object.defineProperty(exports, "Issue", ({ enumerable: true, get: function () { return issue_1.Issue; } }));
54073
54073
  const config_1 = __webpack_require__(/*! ./config */ "../core/build/src/config.js");
@@ -54173,6 +54173,10 @@ const _edit_1 = __webpack_require__(/*! ./lsp/_edit */ "../core/build/src/lsp/_e
54173
54173
  Object.defineProperty(exports, "LSPEdit", ({ enumerable: true, get: function () { return _edit_1.LSPEdit; } }));
54174
54174
  const _reference_1 = __webpack_require__(/*! ./abap/5_syntax/_reference */ "../core/build/src/abap/5_syntax/_reference.js");
54175
54175
  Object.defineProperty(exports, "ReferenceType", ({ enumerable: true, get: function () { return _reference_1.ReferenceType; } }));
54176
+ const function_length_stats_1 = __webpack_require__(/*! ./utils/function_length_stats */ "../core/build/src/utils/function_length_stats.js");
54177
+ Object.defineProperty(exports, "FunctionLengthStats", ({ enumerable: true, get: function () { return function_length_stats_1.FunctionLengthStats; } }));
54178
+ const form_length_stats_1 = __webpack_require__(/*! ./utils/form_length_stats */ "../core/build/src/utils/form_length_stats.js");
54179
+ Object.defineProperty(exports, "FormLengthStats", ({ enumerable: true, get: function () { return form_length_stats_1.FormLengthStats; } }));
54176
54180
  // do not include this file from anywhere within abaplint
54177
54181
  // https://github.com/abaplint/abaplint/issues/873
54178
54182
  const Edits = {
@@ -66578,7 +66582,7 @@ class Registry {
66578
66582
  }
66579
66583
  static abaplintVersion() {
66580
66584
  // magic, see build script "version.js"
66581
- return "2.119.40";
66585
+ return "2.119.41";
66582
66586
  }
66583
66587
  getDDICReferences() {
66584
66588
  return this.ddicReferences;
@@ -82782,17 +82786,20 @@ const method_length_stats_1 = __webpack_require__(/*! ../utils/method_length_sta
82782
82786
  const _irule_1 = __webpack_require__(/*! ./_irule */ "../core/build/src/rules/_irule.js");
82783
82787
  const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "../core/build/src/rules/_basic_rule_config.js");
82784
82788
  const form_length_stats_1 = __webpack_require__(/*! ../utils/form_length_stats */ "../core/build/src/utils/form_length_stats.js");
82789
+ const function_length_stats_1 = __webpack_require__(/*! ../utils/function_length_stats */ "../core/build/src/utils/function_length_stats.js");
82785
82790
  class MethodLengthConf extends _basic_rule_config_1.BasicRuleConfig {
82786
82791
  constructor() {
82787
82792
  super(...arguments);
82788
- /** Maximum method/form length in statements. */
82793
+ /** Maximum method/form/function module length in statements. */
82789
82794
  this.statements = 100;
82790
- /** Checks for empty methods/forms. */
82795
+ /** Checks for empty methods/forms/function modules. */
82791
82796
  this.errorWhenEmpty = true;
82792
82797
  /** Option to ignore test classes for this check. */
82793
82798
  this.ignoreTestClasses = false;
82794
82799
  /** Option to check forms. */
82795
82800
  this.checkForms = true;
82801
+ /** Option to check function modules. */
82802
+ this.checkFunctionModules = true;
82796
82803
  }
82797
82804
  }
82798
82805
  exports.MethodLengthConf = MethodLengthConf;
@@ -82808,8 +82815,8 @@ class MethodLength {
82808
82815
  getMetadata() {
82809
82816
  return {
82810
82817
  key: "method_length",
82811
- title: "Method/Form Length",
82812
- shortDescription: `Checks relating to method/form length.`,
82818
+ title: "Method/Form/Function Module Length",
82819
+ shortDescription: `Checks relating to method/form/function module length.`,
82813
82820
  extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#keep-methods-small
82814
82821
 
82815
82822
  Abstract methods without statements are considered okay.`,
@@ -82852,7 +82859,12 @@ Abstract methods without statements are considered okay.`,
82852
82859
  const formStats = form_length_stats_1.FormLengthStats.run(obj);
82853
82860
  formIssues = this.check(formStats, "FORM");
82854
82861
  }
82855
- return methodIssues.concat(formIssues);
82862
+ let functionIssues = [];
82863
+ if (this.conf.checkFunctionModules) {
82864
+ const functionStats = function_length_stats_1.FunctionLengthStats.run(obj);
82865
+ functionIssues = this.check(functionStats, "FUNCTION MODULE");
82866
+ }
82867
+ return methodIssues.concat(formIssues).concat(functionIssues);
82856
82868
  }
82857
82869
  // ***********************
82858
82870
  check(stats, type) {
@@ -95490,6 +95502,105 @@ exports.FormLengthStats = FormLengthStats;
95490
95502
 
95491
95503
  /***/ },
95492
95504
 
95505
+ /***/ "../core/build/src/utils/function_length_stats.js"
95506
+ /*!********************************************************!*\
95507
+ !*** ../core/build/src/utils/function_length_stats.js ***!
95508
+ \********************************************************/
95509
+ (__unused_webpack_module, exports, __webpack_require__) {
95510
+
95511
+ "use strict";
95512
+
95513
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
95514
+ if (k2 === undefined) k2 = k;
95515
+ var desc = Object.getOwnPropertyDescriptor(m, k);
95516
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
95517
+ desc = { enumerable: true, get: function() { return m[k]; } };
95518
+ }
95519
+ Object.defineProperty(o, k2, desc);
95520
+ }) : (function(o, m, k, k2) {
95521
+ if (k2 === undefined) k2 = k;
95522
+ o[k2] = m[k];
95523
+ }));
95524
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
95525
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
95526
+ }) : function(o, v) {
95527
+ o["default"] = v;
95528
+ });
95529
+ var __importStar = (this && this.__importStar) || (function () {
95530
+ var ownKeys = function(o) {
95531
+ ownKeys = Object.getOwnPropertyNames || function (o) {
95532
+ var ar = [];
95533
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
95534
+ return ar;
95535
+ };
95536
+ return ownKeys(o);
95537
+ };
95538
+ return function (mod) {
95539
+ if (mod && mod.__esModule) return mod;
95540
+ var result = {};
95541
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
95542
+ __setModuleDefault(result, mod);
95543
+ return result;
95544
+ };
95545
+ })();
95546
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
95547
+ exports.FunctionLengthStats = void 0;
95548
+ const Statements = __importStar(__webpack_require__(/*! ../abap/2_statements/statements */ "../core/build/src/abap/2_statements/statements/index.js"));
95549
+ const Expressions = __importStar(__webpack_require__(/*! ../abap/2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
95550
+ const _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ "../core/build/src/objects/_abap_object.js");
95551
+ const _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ "../core/build/src/abap/2_statements/statements/_statement.js");
95552
+ class FunctionLengthStats {
95553
+ static run(obj) {
95554
+ const res = [];
95555
+ let pos = undefined;
95556
+ let name = "";
95557
+ let count = 0;
95558
+ let func = false;
95559
+ if (!(obj instanceof _abap_object_1.ABAPObject)) {
95560
+ return [];
95561
+ }
95562
+ for (const file of obj.getABAPFiles()) {
95563
+ for (const stat of file.getStatements()) {
95564
+ const type = stat.get();
95565
+ if (type instanceof Statements.FunctionModule) {
95566
+ pos = stat.getFirstToken().getStart();
95567
+ name = this.findName(stat);
95568
+ func = true;
95569
+ count = 0;
95570
+ }
95571
+ else if (type instanceof Statements.EndFunction) {
95572
+ if (pos) {
95573
+ res.push({ name: name, className: "", count, file, pos });
95574
+ }
95575
+ else {
95576
+ continue;
95577
+ }
95578
+ func = false;
95579
+ }
95580
+ else if (func === true
95581
+ && !(type instanceof _statement_1.Comment)
95582
+ && !(type instanceof _statement_1.Empty)) {
95583
+ count = count + 1;
95584
+ }
95585
+ }
95586
+ }
95587
+ return res;
95588
+ }
95589
+ static findName(stat) {
95590
+ const nameExpr = stat.findFirstExpression(Expressions.Field);
95591
+ if (nameExpr) {
95592
+ return nameExpr.getFirstToken().getStr();
95593
+ }
95594
+ else {
95595
+ throw new Error("FunctionLength, findName, expected Field");
95596
+ }
95597
+ }
95598
+ }
95599
+ exports.FunctionLengthStats = FunctionLengthStats;
95600
+ //# sourceMappingURL=function_length_stats.js.map
95601
+
95602
+ /***/ },
95603
+
95493
95604
  /***/ "../core/build/src/utils/include_graph.js"
95494
95605
  /*!************************************************!*\
95495
95606
  !*** ../core/build/src/utils/include_graph.js ***!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.119.40",
3
+ "version": "2.119.41",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "homepage": "https://abaplint.org",
40
40
  "devDependencies": {
41
- "@abaplint/core": "^2.119.40",
41
+ "@abaplint/core": "^2.119.41",
42
42
  "@types/chai": "^4.3.20",
43
43
  "@types/minimist": "^1.2.5",
44
44
  "@types/mocha": "^10.0.10",
@@ -49,7 +49,7 @@
49
49
  "eslint": "^9.39.4",
50
50
  "glob": "^13.0.6",
51
51
  "json5": "^2.2.3",
52
- "memfs": "^4.57.7",
52
+ "memfs": "^4.57.8",
53
53
  "minimist": "^1.2.8",
54
54
  "mocha": "^11.7.6",
55
55
  "p-limit": "^3.1.0",