-
Notifications
You must be signed in to change notification settings - Fork 25
Contributing
We welcome pull requests and bug reports through GitHub. You may want to submit an issue to discuss large changes first, before implementing them. If you do add code, please add your name to the AUTHORS file. Code should compile on mac and linux with clang and gcc without errors or warnings.
Please submit pull requests to the develop
branch. When stable we merge develop
into master
.
Code is organised as:
-
libs/
included library code from other projects / third party code -
src/global
code used everywhere -
src/basic
utility functions -
src/paths
path information -
src/graph
de Bruijn graph [+] -
src/graph_paths
graph+path interactions and path IO [+] -
src/tools
complex operations performed on the graph [+] -
src/commands
one file per cortex command ctx_COMMAND [+] -
src/main
files with a main function go in here [+]
[+] => files that need recompiling based on different MAX_KMER_SIZE
Files only link to files that are above them in the list above. E.g. src/graph/*
files only include files in src/graph/
, src/paths/
, src/basic/
, src/global/
and libs/
.
Thread-safe functions are named *_mt().
seq_file
provides support for reading FASTA, FASTQ and plain sequence file formats from both files and gzipped files.
madcrowlib
provides C macros for lists and buffers.
bit_array
provides bit arrays (aka bitsets) and bit level locking.
We turn on as many warnings as possible when compiling. Code should compile on both 64 bit mac and linux in GCC and clang without errors. New files don't have to be added to the Makefile -- they will be automatically detected if you put them in one of the directories listed above.
Static analysis can be run with cppcheck:
cppcheck src
or with clang:
rm -rf bin/ctx31
scan-build make RECOMPILE=1
Occasionally we also run Coverity Scan. This is done by pushing to the coverity_scan
branch on github, which triggers Travis CI to upload the latest code to Coverity.
Errors are printed and we exit if we cannot recover from an issue. We issue a warning if we can carry on, but some output may be missing and some input ignored.