Skip to content

Development

Development of Passgen happens at GitLab. Merge requests and bug reports are very welcome there. These are some useful resources for development of passgen:

  • Repository


    Passgen uses GitLab to store code and run continuous integration and deployment jobs.

    Repository

  • Documentation


    Doxygen-generated source code documentation is available.

    Documentation

  • Continuous Integration


    GitLab CI is used for Continuous Integration and Continuous Deployment.

    Explanation

  • Test Coverage


    As part of the CI/CD pipeline, test coverage reports are generated.

    Coverage: LCOV, LLVM cov

GitLab CI is used to test and build the code on every commit, for all of the platforms that are supported. LLVM sanitizers and valgrind are used to catch memory unsafety errors. QEMU is used to execute all of the unit tests for all of the supported platforms. Additionally, the CI generates SSH signatures for the nightly builds that are also available for download at the releases page.

Code coverage reports from llvm-cov are currently broken

The code coverage reports from llvm-cov are currently broken. They only show code coverage of the files of the test system, but not of passgen itself. I'm working on fixing that.

Doxygen documentation is published for the source code on every commit to the master branch. Finally, code coverage (as determined by the unit tests) is generated by lcov and llvm-cov, and published similarly (see the respective links).

Passgen is written in C, consisting of a library and a command-line utility that uses the library. It can be easily embedded into other applications. Passgen does not use any global state, and as such it is safe to use from different threads. However, the parser can only be used from one thread at a time (it has no mutex to prevent errors from happening due to concurrent access).

Passgen uses the CMake build system, allowing it to be built on different platforms and with different compilers. However, only gcc and clang are officially supported and tested, as those are used in the CI builds.

You may also check out the GitHub project page, which is kept somewhat in sync. If you are interested in an explainer of how to build Passgen, check out the Building page.