## Reporting ### Reporting bugs Please include the following when reporting bugs: * Operating system used * Version of Qt used * Detailed explanation of the bug: * what was done * what was expected * what happened ## Contributing ### General code rules * Use generic formats ### Hooks Symlink the hooks: ``` [smolbote repo]$ ln -s ../../tools/hooks/pre-commit.rb .git/hooks/pre-commit ``` ### Code * Where possible, use QVector over QList: http://lists.qt-project.org/pipermail/development/2017-March/029040.html ### Versioning #### Major version Changed infrequently and almost entirely out of foppery and whim. #### Minor version Milestone of multiple features. #### Revision Major bugfixes and each new feature should get a revision. ### Branching * master - main branch, should be kept up-to-date, and have only working code * next - next stable release preparation, mostly for bugfixes * development - development branch, anything goes there ### Folder structure folder | description ------ | ----------- /src | source code /src/widgets | subclassed Qt widgets /src/formats | file format parsing (toml, xbel) /src/forms | Qt UI forms and classes /src/webengine | QWebEngine subclasses /test | test run location, mainly for QtCreator ### Licensing Please include an appropriate license header in any file you add. A sample GPLv3 header is included in docs/header-gpl3.txt. The provided pre-commit hook uses the following regular expression to check for a license: ```ruby /Copyright\s\(C\)\s(\d{4}\s*-\s*){0,1}(#{Time.now.year})/ ``` ### QtCreator * In the project Run Settings set the working directory to _$repo/test_, and the command line arguments to _-c poi.conf_. ### firejail Any submitted modifications should work with the provided firejail profile. ### clazy You can use [clazy](clazy-git) to check Qt semantics. Requires clang. To easily set check levels, set the CLAZY_CHECKS environment variable to 'level0,level1', etc. #### Reducing clazy noise If you want to suppress warnings from headers of Qt or 3rd party code, include them with -isystem instead of -I. To do this, you have to [modify your Qt profile](clazy-sysincludes) like this: Find the profile's search path: ```sh $ qbs config --list profiles.qt562.preferences profiles.qt562.preferences.qbsSearchPaths: "/home/someone/.config/QtProject/qbs/1.9.0/profiles/qt562" ``` Replace cpp.includePaths with cpp.systemIncludePaths in the Qt modules of that profile: ```sh $ find /home/someone/.config/QtProject/qbs/1.9.0/profiles/qt562/modules/Qt/ -name '*.qbs' | xargs -n1 sed -i s/cpp\.includePaths/cpp.systemIncludePaths/ ``` [clazy-git]: https://github.com/KDE/clazy [clazy-sysincludes]: http://lists.qt-project.org/pipermail/qbs/2017-April/001709.html