ROS Quality Assurance Working Group meeting minutes April 2018 Meeting
Time: 3 p.m. UTC
Notes:
Agenda:
We still working on the first initiative, “Making ROS Packages quality visible”. We identified a list of Quality Metrics to use (display for each package). We defined most of these metrics in a google doc. Currently, the list contains over 20 metrics. We need to prioritize which metrics to implement first. During this meeting, will went through these metrics and assign an implementation priority (i.e. High, Medium and Low).
Outcome:
During the meeting participants voted a priority for each metric. Please refer to the Quality Metrics for the vote results. The list of metrics and the voted priority listed below:
CI Badge
Build High
Unit Tests High
Unit Test Coverage [%] High
Static Analysis
Code style violations Medium
Logic errors and warnings Medium
Cyclomatic complexity Low
McCabe complexity Low
Afferent coupling Medium
Efferent coupling Medium
Dynamic Analysis
Clang AddressSanitizer and LeakSanitizer High
Testing
Fuzzy testing by “chaos node” Low/Medium
Documentation
Comment to code ratio Low
Documentation coverage Medium
Package/Library Status (lifecycle) High
Existence of a roadmap Medium
Existence of readme Low/Medium
Wiki page quality/completeness Medium
Tutorial availability Medium
Open issues report
Number of closed issues Low
Time to close issue Low/Medium
Activity on issues Medium
Other status (eg: wont-fix, etc.) Low
Number of open issues Low
User Rating Medium/High
Other
Maintainability Index Low/Medium
Depth of Inheritance Low
Class Coupling High/Medium
Lines of Code Low
Cyclic includes Medium/Low
We will be moving to implement this initiative and we seeking help. We calling for volunteers to assist in the implementation of this initiative, “Making ROS packages quality visible”. Please, get in touch if you like to help?
Hello Adam,
I’d like to participate, I’d like to participate, but I have some questions. How shall the work be done, do we have any guidelines, repositories?
Are owners of topics already working on them? All high priority ones already have owners, I wouldn’t mind working on less priority ones though, but it’s not really clear on “where to start”
Thanks for asking. Your questions should clarify further.
Owners are not necessarily the persons who would do the implementation, i.e. development. I put the “owner” in order to have someone to investigate the metrics and propose a definition … The ownership for now is temporary until we found people who have the skills to do the implementation.
We looking for people who would help in the development work to display these metrics. Once we have enough volunteers, we will meet and kick off the work. The implementation team will meet outside the QA working group as it has a specific mandate.
So far you the first volunteer. Others may join from the working group. Once we have another volunteer we can meet sometimes in May to kick off the work?
For 4. Testing 1. Fuzzy testing by “chaos node" Low/Medium there is the repository hypothesis-ros which implements the lowest level functionality for property based testing (allows fuzzy testing as well). If you already used Python hypothesis and want to contribute you could already have a look into it. You can find the contribution guidelines in rospbt/CONTRIBUTING.md
Like David, I also have some questions about the metrics, such as which coding standards are you considering for coding style violations? Were these details discussed already, or are they open for a future meeting?
We haven’t discuss those granular details yet. You have been in touch with Andrzej in this regard. If you willing to assist then we should get together sometimes in May to kick off the discussion.
I have been looking into the list of metrics, and I would like to point out that some metrics are listed under different names, but have the same meaning in practice (i.e. they are repeated).
McCabe Complexity is usually a synonym for Cyclomatic Complexity.
Class Coupling is often equivalent to Efferent Coupling.
If under this project these entries have different meanings, I would like to know.