Update of the Abyssinian Mode

At SideCI, we have been providing the Abyssinian Mode for a new code review style experience since January. In the Abyssinian Mode, you can check the list of issues found by SideCI, and choose to either “fix” or “close” them when reviewing. The closed issues are ignored by SideCI but are archived, which you can come back and check again later. Issues detected with analysis tools include false positives which actually don’t present much of a problem. The Abyssinian Mode makes it able for you to “not fix” such issues after they’re detected, rather than having to suppress them with particular comments in the source code.

Suppressing issue detection with comments in the source code is a popular method taken in many analysis tools. However, there are problems such as:

  • Having to directly fix the source codes, and obstructs the code when re-reading
  • Selecting which issue to suppress being difficult (A wider range of issues may be suppressed than expected, which may make issues that really need to be reported be overlooked)

Using the Abyssinian Mode and handling these warnings in the reviewing stage makes it able for teams to review codes more efficiently.

Now, about the update. We have deployed a major feature update last Wednesday, on the 24th. In this update, we mainly made improvements in the two following points:

  • Improved execution speed in several analysis tools, including PHPMD
  • Improved the analysis execution trace display

Improvement of Analysis Speed

We mainly improved the execution speed of PHPMD. This is achieved by only analyzing files with modifications when analyzing a Pull Request.

In PHPMD and some other analysis tools, the analysis is done for a portion of the program rather than the whole of it, so there is no need to analyze all of the source codes every time. Even if unmodified files are analyzed, such results are discarded by SideCI. So, we realized this improvement by detecting modified files in the Pull Request beforehand and making them the target of analysis.

Whether or not it’s ok to restrict analysis to only modified files depends on the nature of the analysis tool. Currently, we implemented this way of analysis in tools which we judged are clearly OK to do so.

Until now, PHPMD took too much time in executing, and most of the times it would time out with actual program codes, but this has been greatly improved. At first, we phrased that “support with PHP is experimental”, but now we acknowledge it to be at a practical level.

  • Execution time still depends greatly on the total quantity of the modifications made in the Pull Request, so there’s still a chance analysis will time out when analyzing large Pull Requests.
  • When analyzing large repositories, calculating the differentials may take some time, causing a time out.

Analysis Execution Trace

The Abyssinian Mode allows you to view the execution trace of the analysis. The execution trace shows:

  • What SideCI is executing
  • Command lines given to the analysis tool
  • Part of the output from the analysis tool

It can help you in troubleshooting when the analysis on SideCI doesn’t work as intended.

For this execution trace, we made the following improvements:

  • Improvements in display, such as adding timestamps
  • Fixed so the trace could be displayed even during the execution

Summary

SideCI’s development team has been working on improving the Abyssinian Mode, and we feel it is approaching the line of quality that it could actually be used in various projects. We are planning to change the default settings of new repositories when registering to the Abyssinian Mode in the near future. (At that state, you will still be able to switch back to the Classic Mode from the repository settings. Also, existing repositories won’t be influenced by this change.)

Please give the Abyssinian Mode a try! We would greatly appreciate feedback and suggestions for improvement.


For more information about Sider, please go to our website.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.