-
Notifications
You must be signed in to change notification settings - Fork 24
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/globalcode used everywhere -
src/basicutility functions -
src/pathspath information -
src/graphde Bruijn graph [+] -
src/graph_pathsgraph+path interactions and path IO [+] -
src/toolscomplex operations performed on the graph [+] -
src/commandsone file per cortex command ctx_COMMAND [+] -
src/mainfiles 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.