I am a member of the Green-Code-Initiative core team. We would like to request the addition of the Creedengo iOS plugin to the SonarQube Marketplace. Some description of the Creedengo project has been written by jycr in discussion [NEW PLUGIN] ecoCode - Requesting inclusion in SonarQube Marketplace
This plugin targets iOS and specifically SWIFT language. The first release we would like to include is 2.0.0. The first version wasnāt submitted for SonarQube MarketPlace.
We are maintaining a test project to verify the quality of the plugin and that all rules are well reported into SonarQube. You can find it here for your tests: test project
That youāve apparently declared a Pbxproj language? I see a default profile for it and one rule. But the test project you provided apparently doesnāt have any āpbxprojā files in it? At least, no issues are raised from that rule, and I donāt see any Lines of Code counted for the language. Iām going to need more detail on this. Donāt forget that Requirement 9 calls for ncloc and ncloc_data for new languages.
The PR declares compatibility with SonarQube Community Build - which does not support Swift analysis - but not with SonarQube Server - which doesā¦
Nice to have
Within Sonar we have a rule-writing guideline that the issue message must be imperative. I.e. āDo [not] xā. Iām looking at a creedengo-swift:GCI509 issue andā¦ honestly I had to read this about 3 times to understand what was supposed to happen. The rule title is āRigid Alarmā which is mildly helpful, but not as visible in the issues context as I would like (which is obvs not your fault). But when I see an issue raised that says āSetting a tolerance for timers will allow them to fire later than the scheduled fire date.ā ā¦ I have no idea off-hand whether thatās good or bad. So I read the rule description.
Setting a tolerance for timers will allow them to fire later than the scheduled fire date. The system will use this flexibility to shift the execution of timers by small amounts of time, within their tolerances, increasing the ability to optimize power savingsā¦
That seems goodā¦ Right? Soā¦ why was an issue raised? ā¦ I go back to the issue message āSetting a tolerance for timers will allow them to fire laterā¦ā Okayā¦ Finally, I realize thereās no timer in the code and there should be.
My point? Help your users out and tell them what to do: āSet a tolerance for this timer to allow increased processor idling.ā
I similarly donāt understand why the creedengo-swift:GCI519 issues are raised (but this time Iām not going to take the time to figure it out ). Please just take this^ into consideration for all your rules.
āSobrietyā as a rule prefix and as a tagā¦ That word doesnāt mean what you think it does in English.
In MQR mode, I see all issues raised as Consistency issues. I suppose you picked that as a default? But particularly for the leak-related rules, I believe you should reconsider this and perhaps use Intentionality. In factā¦ since āefficientā falls under Intentionality, that should probably be your default for everything as a general rule. Iām not going to be rigid about it this time. But I canāt say that wonāt change.
Cool. For every language you declare, you must provide basic metrics: ncloc and ncloc_data.
That plugin is not in our Marketplace and is in fact in competition with our commercial offerings. Since I have tested your plugin with 2025.1 DE, it can be listed as compatible with SQS, but not with Community Build.