MCPcopy Index your code
hub / github.com/Riverside-Software/sonar-openedge

github.com/Riverside-Software/sonar-openedge @V3.8.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release V3.8.1 ↗ · + Follow
6,001 symbols 23,469 edges 464 files 703 documented · 12%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

CABL - Code Analyzer for ABL

CABL enables analysis of OpenEdge procedural and object-oriented code on the SonarQube platform, by reporting: * Metrics (lines of code, comment density, complexity, shared objects) * Issues found in the source code and DF files, such as performance killers, usage of deprecated keywords or incorrect usage of functions, potential runtime issues, and so on * Code coverage from unit tests * Code duplication * Compiler warnings * XREF information * Vulnerabilities and security hotspots

Documentation

Documentation is available here

How do I get started?

While having a build process based on PCT is recommended (as some metrics and rules can only be executed with the build output of PCT), you can still try the OpenEdge plugin for SonarQube directly on your codebase. Just follow the instructions.

PCT is open-source and free, but if you want to rely on our consulting services, please contact us at contact@riverside-software.fr

Build status

OpenEdge plugin - main branch:

Build Status

IntelliJ support

Opening this repository in IntelliJ requires the ANTLR 4 plugin. Once installed, open "ANTLR v4 default project settings", and add src/main/antlr4/imports to "Location of imported grammars".

Extension points exported contracts — how you extend this code

Primitive (Interface)
Field and Variable implement Primitive because they both have a "primitive" Progress data type (INTEGER, CHARACTER, etc) [7 …
proparse/src/main/java/org/prorefactor/treeparser/Primitive.java
CheckRegistration (Interface)
Implement this interface to register Proparse or DumpFile checks [5 implementers]
openedge-checks/src/main/java/org/sonar/plugins/openedge/api/CheckRegistration.java
IElementDocumentation (Interface)
(no doc) [10 implementers]
rcode-reader/src/main/java/eu/rssw/pct/elements/IElementDocumentation.java
LineProcessor (Interface)
(no doc) [4 implementers]
openedge-plugin/src/main/java/org/sonar/plugins/openedge/sensor/OpenEdgeDependenciesSensor.java
IField (Interface)
(no doc) [6 implementers]
proparse/src/main/java/org/prorefactor/core/schema/IField.java
LicenseRegistration (Interface)
Implement this interface to register licenses [3 implementers]
openedge-checks/src/main/java/org/sonar/plugins/openedge/api/LicenseRegistration.java
IEnumDescriptor (Interface)
(no doc) [7 implementers]
rcode-reader/src/main/java/eu/rssw/pct/elements/IEnumDescriptor.java
IRefactorSessionEnv (Interface)
(no doc) [2 implementers]
openedge-plugin/src/main/java/org/sonar/plugins/openedge/foundation/IRefactorSessionEnv.java

Core symbols most depended-on inside this repo

get
called by 972
proparse/src/main/java/org/prorefactor/proparse/InputSource.java
size
called by 769
proparse/src/main/java/org/prorefactor/core/JPNode.java
getTopNode
called by 603
proparse/src/main/java/org/prorefactor/treeparser/ParseUnit.java
getNodeType
called by 406
proparse/src/main/java/org/prorefactor/treeparser/symbols/ISymbol.java
getRootScope
called by 371
proparse/src/main/java/org/prorefactor/treeparser/ParseUnit.java
get
called by 340
rcode-reader/src/main/java/eu/rssw/pct/elements/DataType.java
getText
called by 330
proparse/src/main/java/org/prorefactor/core/JPNode.java
getNodeType
called by 323
proparse/src/main/java/org/prorefactor/core/ProToken.java

Shape

Method 5,402
Class 517
Interface 55
Enum 27

Languages

Java100%

Modules by API surface

proparse/src/main/java/org/prorefactor/proparse/JPNodeVisitor.java522 symbols
proparse/src/main/java/org/prorefactor/treeparser/TreeParserVariableDefinition.java296 symbols
proparse/src/main/java/com/progress/xref/CrossReference.java125 symbols
proparse/src/main/java/org/prorefactor/core/JPNode.java116 symbols
proparse/src/test/java/org/prorefactor/core/ParserTest.java90 symbols
proparse/src/test/java/org/prorefactor/core/BugFixTest.java86 symbols
proparse/src/test/java/org/prorefactor/core/TreeParser03Test.java80 symbols
proparse/src/main/java/org/prorefactor/proparse/Lexer.java77 symbols
proparse/src/test/java/org/prorefactor/core/PreprocessorParserTest.java72 symbols
proparse/src/test/java/org/prorefactor/proparse/ExpressionEngineTest.java69 symbols
openedge-plugin/src/main/java/org/sonar/plugins/openedge/foundation/OpenEdgeSettings.java69 symbols
proparse/src/main/java/org/prorefactor/proparse/PreproEval.java67 symbols

For agents

$ claude mcp add sonar-openedge \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact