|
| 1 | +--- |
| 2 | +collaborating_projects: |
| 3 | + - coala |
| 4 | +desc: "Implement a result reporter tool that converts linter/bear results |
| 5 | +into various formats" |
| 6 | +difficulty: medium |
| 7 | +initiatives: |
| 8 | + - GSoC |
| 9 | +issues: |
| 10 | + - "https://github.com/coala/projects/issues/555" |
| 11 | + - "https://github.com/coala/coala/issues/2757" |
| 12 | + - "https://github.com/coala/coala/issues/5910" |
| 13 | + - "https://gitlab.com/coala/coala-json/issues/3" |
| 14 | +markdown: result-reporter-tool.md |
| 15 | +mentors: |
| 16 | + - li-boxuan |
| 17 | +name: "Result Reporter Tool" |
| 18 | +requirements: |
| 19 | + - "The applicant should have at least one non-trivial patch merged to |
| 20 | + coala or coala-bears." |
| 21 | + - "The applicant should be familiar with Python." |
| 22 | + - "Familiarity with continuous integration tools (e.g. Jenkins) is a plus." |
| 23 | +tags: |
| 24 | + - Core |
| 25 | + - Linter |
| 26 | + - CI |
| 27 | +--- |
| 28 | + |
| 29 | +Apart from common CLI output, coala provides json format output. However, there |
| 30 | +are other formats which are useful for reporting tests and failures, but coala |
| 31 | +does not support at the moment. |
| 32 | + |
| 33 | +This is not only for coala, result format inconsistencies has been a problem for |
| 34 | +a long time. Converting the static analysis results into a test results format |
| 35 | +has been done a few times, such as early PEP8 plugins to Jenkins. The mapping |
| 36 | +isn't exact, but the benefits of using the test result format is tight |
| 37 | +integration with various systems. |
| 38 | + |
| 39 | +Most commonly used is JUnit format. CircleCI can accept |
| 40 | +[this format](https://circleci.com/docs/2.0/collect-test-data). AppVeyor can |
| 41 | +receive test results in [XML format](https://www.appveyor.com/docs/running-tests/#uploading-xml-test-results). |
| 42 | +Other formats include [TAP](https://testanything.org/), |
| 43 | +[Clover](http://openclover.org/doc/manual/latest/ant--clover-report.html), |
| 44 | +There are some systems, such as Phabricator, which have a |
| 45 | +[custom format](https://github.com/facebook/infer/issues/673) they expect. |
| 46 | + |
| 47 | +The applicant is welcomed to propose additional ideas around format topic, to |
| 48 | +improve coala workflow, continuous integration workflow or linters workflow. |
| 49 | +For example, pulling the coala results from CI could be a way to inform newbies |
| 50 | +of the style problems with their PRs. Pushing the unit test results as XML to |
| 51 | +the CI (using combination XML files if necessary). It might also provide |
| 52 | +linters with a solid set of classes and output formats for their CLI, letting |
| 53 | +them focus on linting algorithms. |
| 54 | + |
| 55 | +#### Milestones |
| 56 | + |
| 57 | +##### PREPARATION/BONDING |
| 58 | + |
| 59 | +- The applicant has created and merged a cEP for this project. |
| 60 | +- The applicant has done research on different formats, including JUnit, |
| 61 | + checkstyle, TAP, Language Server Protocol (LSP), etc. |
| 62 | +- The applicant has done research on different formats required by CI |
| 63 | + tools and platforms, including Jenkins, Circle CI, Appveyor, Phabricator, etc. |
| 64 | + |
| 65 | +##### CODING PHASE 1 |
| 66 | + |
| 67 | +- A tool that converts JSON results to JUnit format is implemented, tested, |
| 68 | + and documented. |
| 69 | +- Test and add doc regarding how to upload coala results into Circle CI and |
| 70 | + Appveyor. |
| 71 | +- Add infrastructure (CI, doc) to coala-json repository, where most part of |
| 72 | + this project will probably reside. |
| 73 | + |
| 74 | +##### CODING PHASE 2 |
| 75 | + |
| 76 | +- Extend the tool to support different formats, including Checkstyle format, |
| 77 | + TAP, Clover. |
| 78 | +- Test and add doc regarding how to upload coala results into Jenkins and |
| 79 | + Phabricator. |
| 80 | +- Import converters into coala main repository to improve coala output mode. |
| 81 | + |
| 82 | +##### CODING PHASE 3 |
| 83 | + |
| 84 | +- Provide various linters with a solid set of classes and output formats for |
| 85 | + their CLI. |
| 86 | +- Handle JSON/xml reports from linters before feeding into linter bears. |
0 commit comments