Skip to content

Work-road to track simple tasks to improve the codebase #52

@AxelKrypton

Description

@AxelKrypton

This issue is meant as parent issue for different tasks that are meant to improve the codebase from different points of view. The following check-list is shortly explaining each task and GitHub offer the possibility to convert each item in a new dedicated issue. @elfnerhannah I compiled the list with @RobinSattler who had taken notes of possible ideas, combining his input with my list. We can also decide together when to do what and who to assign. I will already open issues for tasks that I believe should be done soon-ish.

  • Set up GitHub actions
    These are meant to check if the codebase compiles, format it (from within the actions with a commit done by the GitHub bot) and run tests. PRs should then be mergeable only if actions pass. Issue Add formatter script to sampler codebase #30 should be tackled before this.
  • Rewrite CMake code to set up the project #53
  • Better testing
    A unit testing framework is in place and it should be easily possible to add unit tests when working on the code e.g. about the other issues here around or adding new functionality. It would be worth adding some CMake functionality to create new tests as needed.
  • Use C++ STL std::filesystem for output everywhere
    At the moment some C-style system call are used, but C++ offers since C++17 all needed tools to deal with this. While tackling this, it would be nice to add a mechanism that prevents existing output from being overwritten.
  • Make a copy of config file into the output folder adding to it relevant metadata
    This is important for data reproducibility. It would be nice to ignore comments when parsing the config, such that this stored config can directly be reused.
  • Consider using YAML for the config file
    Since SMASH does so and the handler uses SMASH as a library, this would be basically for free. The smash::Configuration object might probably even be used (although without validation ATM).
  • Improve standard output
    The user needs to know a lot of details to understand what the program is printing to the screen. This might be simply improved making it descriptive.
  • Think about a documentation strategy
    At the moment there is nothing else beyond the README file.
  • Add a CONTRIBUTING.md file #46
  • Apply IOSP (integration-operation segregation principle) as much as possible
    This would make the top-level of the code much more readable as entry point (basically main just calls functions).

Most of the tasks above can be used as exercise for new students to make them get familiar with the GitHub infrastructure. @yukarpenko This might be also useful in case you have new people in your group. 😊

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions