1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-05 06:52:22 +03:00
systemd/docs/CODE_QUALITY.md
Filipe Brandenburger c3e270f4ee docs: add a "front matter" snippet to our markdown pages
It turns out Jekyll (the engine behind GitHub Pages) requires that pages
include a "Front Matter" snippet of YAML at the top for proper rendering.

Omitting it will still render the pages, but including it opens up new
possibilities, such as using a {% for %} loop to generate index.md instead of
requiring a separate script.

I'm hoping this will also fix the issue with some of the pages (notably
CODE_OF_CONDUCT.html) not being available under systemd.io

Tested locally by rendering the website with Jekyll. Before this change, the
*.md files were kept unchanged (so not sure how that even works?!), after this
commit, proper *.html files were generated from it.
2019-01-02 14:16:34 -08:00

3.1 KiB

title
Code Quality Tools

Code Quality Tools

The systemd project has a number of code quality tools set up in the source tree and on the github infrastructure. Here's an incomprehensive list of the available functionality:

  1. Use ninja -C build test to run the unit tests. Some tests are skipped if no privileges are available, hence consider also running them with sudo ninja -C build test. A couple of unit tests are considered "unsafe" (as they change system state); to run those too, build with meson -Dtests=unsafe. Finally, some unit tests are considered to be very slow, build them too with meson -Dslow-tests=true. (Note that there are a couple of manual tests in addition to these unit tests.)

  2. Use ./test/run-integration-tests.sh to run the full integration test suite. This will build OS images with a number of integration tests and run them in nspawn and qemu. Requires root.

  3. Use ./coccinelle/run-coccinelle.sh to run all Coccinelle semantic patch scripts we ship. The output will show false positives, hence take it with a pinch of salt.

  4. Use ./tools/find-double-newline.sh recdiff to find double newlines. Use ./tools/find-double-newline.sh recpatch to fix them. Take this with a grain of salt, in particular as we generally leave foreign header files we include in our tree unmodified, if possible.

  5. Similar use ./tools/find-tabs.sh recdiff to find TABs, and ./tools/find-tabs.sh recpatch to fix them. (Again, grain of salt, foreign headers should usually be left unmodified.)

  6. Use ninja -C build check-api-docs to compare the list of exported symbols of libsystemd.so and libudev.so with the list of man pages. Symbols lacking documentation are highlighted.

  7. Use ninja -C build hwdb-update to automatically download and import the PCI, USB and OUI databases into hwdb.

  8. Use ninja -C build man/update-man-rules to update the meson rules for building man pages automatically from the docbook XML files included in man/.

  9. There are multiple CI systems in use that run on every github PR submission.

  10. Coverity is analyzing systemd master in regular intervals. The reports are available online.

  11. oss-fuzz is continuously fuzzing the codebase. Reports are available online.

  12. Our tree includes .editorconfig, .dir-locals.el and .vimrc files, to ensure that editors follow the right indentiation styles automatically.

  13. When building systemd from a git checkout the build scripts will automatically enable a git commit hook that ensures whitespace cleanliness.

  14. LGTM analyzes every commit pushed to master. The list of active alerts can be found here.

Access to Coverity and oss-fuzz reports is limited. Please reach out to the maintainers if you need access.