FOURJS Genero BDL integration

Hello!

My company FOURJS is selling a proprietary programming language called Genero BDL (www.4js.com)
To make it short: Genero BDL is based on Informix 4GL with many added features. We provide a compiler and runtime system (VM), a bit like java does.

We would like to integrate with SonarQube, to do source code analysis and code/test coverage.

I have started to look at this documentation page, about supporting a new programming language in SonarQube:

However, this part of the SonarQube documentation is very limited and points to the Java-based “SonarSource Language Recognizer” framework: GitHub - SonarSource/sslr: SonarSource Language Recognizer

We would like to know if this is the only option to implement a plugin for our Genero BDL language, or if there is a public specification of a protocol to feed SonarQube with source scanning data.

For test/code coverage, I understood that SonarQube supports a generic format and this is exactly the kind of specifications we are looking for:

Sorry if my questions look stupid, I am new at SonarQube.

I have just started to read the doc, so if I have missed something obvious, please point me to the page(s)!

BR,
Seb

Hi Seb,

Welcome to the community!

We were all beginners once, and there are no stupid questions! (Please don’t take that as a challenge :laughing:)

Yeah, that’s because analysis is Java-based and so your analyzer / plugin needs to run on Java.

It is. If SonarQube already recognized the language, you could implement and run the rules outside analysis and just feed in the results via the Generic Issues Report format. But supporting a whole new language is going to require a Java-based plugin.

 
HTH,
Ann

Hello Ann,

Thanks for your answer, but I am confused.

The SonarQube doc page about Generi Issues Report says something different (or I did not get what you wrote):

If your third-party analyzer is not supported by SonarQube then you can import the reports by using the SonarQube generic issue format. No plugin is required.

Do you confirm that a Java-based plugin (using SSLR) is still required?

Can you point me to the doc links that explain all of this (for SonarQube plugin developers)?

Thanks

Hi,

The important part here is this (emphasis mine):

If your analyzer is not supported, not "if your language is not supported. The underlying assumption there^ is that the language is already supported. In that case, you can use the Generic Issues Report format to supplement a supported language with issues from an additional, external analyzer.

But for you, the underlying language isn’t yet supported. So yes, a Java-based plugin is still required.

There’s nothing beyond what you’ve already found:

Note that while you can use the SSLR, you’re not required to.

 
HTH,
Ann

Ok thanks a lot!
Seb

Hello!

Sorry to insist, maybe a last question:

If I want to give a chance to the second option, where can I find a specification about this option?

Steps 1/2 in “Supporting new languages” page say that I must implement the grammar parser, to produce a “parse tree”:

Write a parser (a parser simply parses an input based on your grammar to yield a parse tree).

With our Genero compiler, we do already produce our own version of a parse tree in XML format.
Maybe we could just adapt this, to build a parse tree that can be understood by SonarQube.

Genero BDL is a 4GL language with a lot of grammar rules so re-writing an SSLR for Genero BDL is several weeks of work + maintenance, as we continue to add instructions to the language grammar.

Do I have to rev-eng SSLR Java code, to understand how to implement this?

Seb

Hi Seb,

Sorry, there isn’t one.

It’s been a very long time since I had my hands on a language analyzer, and never at this level. I simply don’t have answers for you. I can tell you:

  • it needs to run on Java
  • of this list, items 6.1 and 6.2 are basically required. You can probably get away without the rest.

Feel free to open new threads for specific coding questions.

 
HTH,
Ann