{"id":28708279,"url":"https://github.com/cnescatlab/i-CodeCNES","last_synced_at":"2025-06-14T18:09:51.604Z","repository":{"id":44571970,"uuid":"45096040","full_name":"cnescatlab/i-CodeCNES","owner":"cnescatlab","description":"i-Code CNES is a static code analysis tool to help developpers write code compliant with CNES coding rules.","archived":false,"fork":false,"pushed_at":"2025-05-13T13:55:00.000Z","size":35783,"stargazers_count":64,"open_issues_count":46,"forks_count":16,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-13T14:10:39.871Z","etag":null,"topics":["analysis","bash","developpers-write","fortran77","fortran90","icode-cnes","metrics","shell","violations"],"latest_commit_sha":null,"homepage":null,"language":"Fortran","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cnescatlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-10-28T07:31:17.000Z","updated_at":"2025-02-18T14:41:52.000Z","dependencies_parsed_at":"2024-01-07T01:18:55.233Z","dependency_job_id":"b68622c9-8741-49ab-bd35-658189362d59","html_url":"https://github.com/cnescatlab/i-CodeCNES","commit_stats":null,"previous_names":["lequal/i-codecnes"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/cnescatlab/i-CodeCNES","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnescatlab%2Fi-CodeCNES","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnescatlab%2Fi-CodeCNES/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnescatlab%2Fi-CodeCNES/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnescatlab%2Fi-CodeCNES/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cnescatlab","download_url":"https://codeload.github.com/cnescatlab/i-CodeCNES/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnescatlab%2Fi-CodeCNES/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259860437,"owners_count":22922989,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analysis","bash","developpers-write","fortran77","fortran90","icode-cnes","metrics","shell","violations"],"created_at":"2025-06-14T18:09:50.660Z","updated_at":"2025-06-14T18:09:51.592Z","avatar_url":"https://github.com/cnescatlab.png","language":"Fortran","funding_links":[],"categories":[],"sub_categories":[],"readme":"![i-Code logo](https://github.com/cnescatlab/i-CodeCNES/blob/master/img/logo-i-code-cnes.png)\n\n[![Java CI](https://github.com/cnescatlab/sonar-cnes-report/actions/workflows/java-continuous-integration.yml/badge.svg)](https://github.com/cnescatlab/i-CodeCNES/actions/workflows/java-continuous-integration.yml)\n[![SonarQube Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=lequal_i-CodeCNES\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=lequal_i-CodeCNES)\n[![SonarQube Bugs](https://sonarcloud.io/api/project_badges/measure?project=lequal_i-CodeCNES\u0026metric=bugs)](https://sonarcloud.io/project/issues?id=lequal_i-CodeCNES\u0026resolved=false\u0026types=BUG)\n[![SonarQube Coverage](https://sonarcloud.io/api/project_badges/measure?project=lequal_i-CodeCNES\u0026metric=coverage)](https://sonarcloud.io/component_measures?id=lequal_i-CodeCNES\u0026metric=Coverage)\n[![SonarQube Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=lequal_i-CodeCNES\u0026metric=sqale_index)](https://sonarcloud.io/component_measures?id=lequal_i-CodeCNES\u0026metric=Maintainability)\n\ni-Code CNES is a static code analysis tool to help developers write code compliant with CNES coding rules for Fortran 77 and Fortran 90 .\n\nAll the information on CNES standards coverage, and rules availabilities and limitations can be read in the [documentation](https://github.com/cnescatlab/i-CodeCNES/wiki). \n\n## Quick start\n- Download latest i-Code version on [GitHub Releases](https://github.com/cnescatlab/i-CodeCNES/releases).\n- Unzip i-Code archive where you need it.\n- Add `icode` to your path.\n- Grant `icode` execution permission.\n- Run `icode path/to/project/directory`.\n\n## i-Code products\n\n##### i-Code Core\nThis is the core library containing all i-Code utilities for code analysis.\n##### i-Code Library\nThis is the full library containing all official checkers. It includes i-Code Core.\n##### i-Code App or i-Code CLI\nThis is the common command line application for i-Code.\n##### i-Code IDE\nThis is the common GUI application for i-Code.\n##### i-Code plugin for Eclipse\nThe Eclipse plugin for i-Code allows to use i-Code from Eclipse IDE.\n##### i-Code plugin for SonarQube\nThe SonarQube plugin for i-Code allows to use i-Code through SonarQube analysis. Please refer to [sonar-icode-cnes-plugin](https://github.com/cnescatlab/sonar-icode-cnes-plugin) for more details.\n\n## Installation\n##### i-Code CLI\nJust unzip the corresponding archive.\n\n##### i-Code IDE\nJust unzip the corresponding archive.\n\n##### i-Code plugin for Eclipse\nRefer to Eclipse documentation to know how to install a standard Eclipse plugin.\n\n##### i-Code plugin for SonarQube\nRefer to SonarQube documentation to know how to install a standard SonarQube plugin.\n\n## Get help\nUse `icode -h` to get the following help about *i-Code*:\n```\nusage: icode [\u003cFILE\u003e [...]] [-c \u003carg\u003e] [-e] [-f \u003carg\u003e] [-h] [-l] [-o \u003carg\u003e] [-p \u003carg\u003e] [-q \u003carg\u003e] [-r] [-v] [-x \u003carg\u003e]\nAnalyze F77 \u0026 F90 code to find defects \u0026 bugs.\n\n -c,--checked-languages \u003carg\u003e        Comma separated list of languages checked during analysis. All by default.\n -e,--exporters                      Display all available exporters.\n -f,--export-format \u003carg\u003e            Set the format for result file. Default format is XML.\n -h,--help                           Display this message.\n -l,--languages                      Display all available languages.\n -o,--output \u003carg\u003e                   Set the name for result file. Results are displayed in standard output by default.\n -p,--export-parameters \u003carg\u003e        Comma separated list of parameters for the export. Format is:\n                                     key1=value1,key2=value2,key3=value3. Default values depend on the chosen export plugin.\n -q,--list-export-parameters \u003carg\u003e   Display all available parameters for the given export.\n -r,--rules                          Display all available rules.\n -v,--version                        Display version information.\n -x,--excluded-rules \u003carg\u003e           Comma separated list of rules id to exclude from analysis. None by default.\n\n\nPlease report issues at https://github.com/cnescatlab/i-CodeCNES/issues\n```\n\n## Build\nYou can easily rebuild all i-Code products with Maven:\n```bash\ngit clone https://github.com/cnescatlab/i-CodeCNES icode\ncd ./icode/\nmvn clean install\n```\n\n## Extending i-Code with your own plugin\nIf you need to add some new feature, the easiest way is to implment your own plugin by forking [icode-custom-plugin-example](https://github.com/cnescatlab/icode-custom-plugin-example) and its dedicated [Developer Guide](https://github.com/cnescatlab/icode-custom-plugin-example/wiki/Developer-guide).\n\n## Changelog\n\n#### Release 5.1.0\n- Includes fixes from Eumetsat (thanks for your contribution!)\n- Includes security fixes from dependabot\n\n#### Release 5.0.0\n- Remove shell support\n\n#### Release 4.1.2\n###### Fixed bugs\n- [x] **BUG #226** \u003e Continuous integration on Travis doesn't work anymore\n\n#### Release 4.1.1\n###### Fixed bugs\n- [x] **BUG #221** \u003e Too many open files\n- [x] **BUG #224** \u003e Remove LEQUAL from this repository\n\n#### Release 4.1.0\n\n###### New features\n- [x] **FEATURE #198** \u003e i-Code should not crash on checker error\n- [x] **FEATURE #201** \u003e Simplify logged information\n\n###### Fixed bugs\n- [x] **BUG #131** \u003e Correction erreur COM.xxx\n- [x] **BUG #147** \u003e Test files may have a \"contains\" instead of an \"equals\" to check the location value\n- [x] **BUG #197** \u003e IndexOutOfBoundsException while analyzing an empty Shell script\n- [x] **BUG #200** \u003e JAXB is still used but missing in icode-library\n\n#### Release 4.0.0\n\n###### New features\n- Complete refactoring of i-Code architecture\n- Deletion of RCP in command line\n- Add version argument in command line\n- Run Jflex through maven #165\n- Jflex version update #165\n- Transform eclipse plugin into Java plugin #165\n- Command line support directory as argument: files inclusion wil be recursively included #161 #157\n- Deletion of parallelized checkers running #161\n- Refactor test as parametrized tests #165\n- Change exe to bat and bash scripts #165\n- Allow to load plugins which are dropped in plugins directory #165\n- Update packaging of i-Code #165\n- Update CI #145\n- Reintegrate RCP as a submodule using i-Code Core #165\n- This 4.0.0 version integrate a whole new architecture described in https://github.com/cnescatlab/i-CodeCNES/wiki\n  - `icode-core`: contains core feature to build analyzer\n  - `icode-library`: contains the minimal classes to run i-Code analyzers in a Java application\n  - `icode-app`: a standalone command line version of i-Code analyzer\n  - `icode-ide`: contains the i-Code IDE version and Eclipse plugin\n  - `*-language`, `*-rules` and `*-metrics`: contain analyzer for several languages: Shell, Fortran, ...\n- The new documentation is available as a wiki https://github.com/cnescatlab/i-CodeCNES/wiki\n- A `Developer Guide` is now available here: https://github.com/cnescatlab/icode-custom-plugin-example/wiki/Developer-guide\n- Users are able to add custom plugins by putting their `jar` files into `icode/plugins/` directory\n- Bug about recursive analysis is fixed and users can now simply analyze a directory, e.g.: `icode .`\n- The continuous integration was enhanced with GitHub Actions (https://github.com/cnescatlab/i-CodeCNES/actions) and SonarCloud(https://sonarcloud.io/dashboard?id=lequal_i-CodeCNES)\n- The contributing page and issue templates were updated\n- Eclipse RCP was removed from core features of i-Code\n- Some other minor enhancements and fixes\n- Fix #157: Recursive search of files for analysis command line enhancement\n- Fix #145: Connect i-Code build to SonarCloud enhancement\n- Fix #142: Add i-Code version to the xml results file enhancement\n- Fix #166: Bad support of heredoc notations bug shell\n- Fix #165: Refactor i-Code architecture enhancement\n- Fix #161: Files handling and recursive analysis issue command line fortran to analyse\n- Fix #170: Combined standalone subroutine + module in same file is crashing scanner in FORTRAN file fortran\n- Fix #159: SHDESIGNOptions false positive false positive shell\n- Fix #168: icode commandline gives incorrect and cryptic error when encountering '))' bug shell\n- Fix #158: Inconsistency between \"RNC shell SH.FLOW.CheckUser example\" and \"I-code COMDESIGNActiveWait LEX\" false positive shell\n- Fix #186: Links in README point to sonar-icode bug documentation\n- Fix #187: Consolidate community documentation documentation\n\n#### Release 3.1.0\n\n###### New features\n* New command line #133 \n* New parsing error handling, a violation named \"Parser error\" is added instead of suspend the analysis. #154\n* New rules (Shell)\n  * COM.DATA.Initialisation ( fix #113 )\n  * COM.DATA.Invariant ( fix #114 )\n  * COM.FLOW.FilePath ( fix #115 )\n  * COM.FLOW.Recursion ( fix #116 )\n  * COM.INST.BoolNegation ( fix #117 )\n  * COM.NAME.Homonymy ( fix #118 )\n  * COM.PRES.Indent ( fix #119 )\n  * COM.PRES.LengthLine ( fix #120 )\n  * SH.FLOW.CheckCodeReturn ( fix #121 )\n  * SH.Ref.Export ( fix #122 #52 #138 #137 )\n  * SH.SYNC.Signals #123 \n* New metrics\n  * SH.MET.LineOfComment\n  * F77.MET.LineOfComment\n  * F90.MET.LineOfComment\n\n###### Fixes \n* Shell \n  * All checkers :\n    * Function correction on FUNCSTART and FNAME #138 #137 #150\n  * COM.FLOW.CaseSwitch : \n    * Case handling fixed #135\n    * Function localization fixed #52\n  * COM.DATA.LoopCondition\n    * Function localization fixed #52\n  * COM.DESIGN.ActiveWait\n    * Function localization fixed #52\n  * COM.FLOW.Abort \n    * Function localization fixed #52\n  \n#### Release 3.0.1\n\n* Fix of Eclipse's plug-in performances #101\n\n#### Release 3.0.0\n\n###### New features\n* Command line for Windows, MacOS \u0026 Linux #64 \n* Standalone version i-Code CNES IDE #1 \n* New Extension Points  \n  * To add languages #32   \n  * To add checkers #23   \n  * To add configurations   \n  * To add exports #19 #26 \n* API  \n  * To run analysis #16   \n  * To export analysis #19  #26   \n  * To reach configurations \u0026 preferences \n* Shells metrics (*SH.MET.LineOfCode*, *SH.MET.RatioComment*, *SH.MET.Nesting*, *SH.MET.ComplexitySimplified*) #30 \n* Automated build #1\n\n###### Bug fixes \u0026 enhancements\n* Analysis performances improvements  #14 \n* User Interface preference page improvements  #36 \n* Improvements of analysis failure notifications #50 \n* XML and CSV export improvements #69  #19 \n\n*Minor fixes and other enhancements : [milestone 3.0.0](https://github.com/cnescatlab/i-CodeCNES/milestone/1).*\n\n### Previous Releases\n* [Release 3.1.0](https://github.com/cnescatlab/i-CodeCNES/releases/tag/v3.1.0)\n* [Release 3.0.1](https://github.com/cnescatlab/i-CodeCNES/releases/tag/v3.0.1)\n* [Release 3.0.0](https://github.com/cnescatlab/i-CodeCNES/releases/tag/v3.0.0)\n* [Release 2.0.0](https://github.com/cnescatlab/i-CodeCNES/releases/tag/v2.0.0)\n* [Release 1.0.0](https://github.com/cnescatlab/i-CodeCNES/releases/tag/v1.0.0)\n\n\n### Feedback and Support\nBugs and feature requests: https://github.com/cnescatlab/i-CodeCNES/issues \n\n### How to contribute\nIf you experienced a problem with the plugin please open an issue. Inside this issue please explain us how to reproduce this issue and paste the log.\n\nIf you want to do a PR, please put inside of it the reason of this pull request. If this pull request fix an issue please insert the number of the issue or explain inside of the PR how to reproduce this issue.\n\n### License\nCopyright 2022 CATLab.\n\nThis software is licensed under the terms in the file named \"LICENSE\" in this directory.\n\nThe software used Java files, generated with JFlex (http://.jflex.de). The terms of this library license are available here after : http://jflex.de/copying.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcnescatlab%2Fi-CodeCNES","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcnescatlab%2Fi-CodeCNES","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcnescatlab%2Fi-CodeCNES/lists"}