| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455 |
- '\" t
- .\" Title: ccanlint
- .\" Author: [see the "AUTHOR" section]
- .\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
- .\" Date: 12/02/2011
- .\" Manual: \ \&
- .\" Source: \ \&
- .\" Language: English
- .\"
- .TH "CCANLINT" "1" "12/02/2011" "\ \&" "\ \&"
- .\" -----------------------------------------------------------------
- .\" * Define some portability stuff
- .\" -----------------------------------------------------------------
- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- .\" http://bugs.debian.org/507673
- .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- .ie \n(.g .ds Aq \(aq
- .el .ds Aq '
- .\" -----------------------------------------------------------------
- .\" * set default formatting
- .\" -----------------------------------------------------------------
- .\" disable hyphenation
- .nh
- .\" disable justification (adjust text to left margin only)
- .ad l
- .\" -----------------------------------------------------------------
- .\" * MAIN CONTENT STARTS HERE *
- .\" -----------------------------------------------------------------
- .SH "NAME"
- ccanlint \- Make CCAN code modules, and the brightness up\&.
- .SH "SYNOPSIS"
- .sp
- \fBccanlint\fR [\fIOPTIONS\fR] [\fIDIRECTORY\fR\&...]
- .SH "DESCRIPTION"
- .sp
- No encoder? No need to \fBccanlint\fR\&. You programmer? Excited to \fBccanlint\fR!
- .sp
- CCAN module is small code of the song\&. \fBccanlint\fR full CCAN testing tool\&. Each test spray bit of wisdom\&. Also score\&. Good score good\&. Bad bad score\&.
- .sp
- \fBccanlint\fR expect the source code in this directory, or command line can be more than one\&. Exit 0 happy if all modules all tests happy\&.
- .SH "OPTIONS"
- .PP
- \fB\-v, \-\-verbose\fR
- .RS 4
- Make
- \fBccanlint\fR
- talkative\&. "\-vv" doing very talkative\&. "\-vvvv" make stupid talker\&.
- .RE
- .PP
- \fB\-n, \-\-safe\-mode\fR
- .RS 4
- Do not compile anything\&. Could it be safer for the bad code, but
- \fBccanlint\fR
- sad useless\&.
- .RE
- .PP
- \fB\-l, \-\-list\-tests\fR
- .RS 4
- Tests show
- \fBccanlint\fR
- can do\&. Then die happy\&.
- .RE
- .PP
- \fB\-\-test\-dep\-graph\fR
- .RS 4
- Chart of all parties
- \fBccanlint\fR
- tests
- \fIdot(1)\fR
- Graphviz, then die happy\&.
- .RE
- .PP
- \fB\-k, \-\-keep\fR
- .RS 4
- \fBccanlint\fR
- normally make mess temporary directory, but now it later in forensic\&.
- .RE
- .PP
- \fB\-s, \-\-summary\fR
- .RS 4
- \fBccanlint\fR
- just realized there is no message unless you die horrible\&.
- .RE
- .PP
- \fB\-x, \-\-exclude\fR=\fITESTNAME\fR
- .RS 4
- No test run\&. Can the use of time many, many do
- \fBccanlint\fR
- very, very quickly\&. Often hatred
- \fItests_run_valgrind\fR
- that the test slowed\&.
- .RE
- .PP
- \fB\-\-timeout\fR=\fIMILLISECONDS\fR
- .RS 4
- Stop the test and forget it if you take too long\&. Generally, the same works as
- \fI\-x tests_run_valgrind\fR\&.
- .RE
- .PP
- \fB\-t, \-\-target\fR=\fITESTNAME\fR
- .RS 4
- Do not run all tests\&. Run this test, and the proof you need\&. Used many times for many tests\&.
- .RE
- .PP
- \fB\-\-compiler\fR=\fICOMPILER\fR
- .RS 4
- \fBccanlint\fR
- read config\&.h about finding
- \fICCAN_COMPILER\fR\&. Otherwise use the default when it was built\&. The change, to use this compiler\&.
- .RE
- .PP
- \fB\-\-cflags\fR=\fICFLAGS\fR
- .RS 4
- Set compiler options to compile\&. Be sure to protect spaces shell hunger\&.
- .RE
- .SH "TESTS"
- .sp
- \fBccanlint\fR many tests\&. Each test will score soon\&. Not total score for each test unless stupid module or no life\&. Worry if little or low score score after hacking\&.
- .sp
- If test break, but not repair, or maybe the dumb test, put the magic lines \fI_info\fR file like this\&. \fBccanlint\fR to score from 0 of 1 for test, but happy:
- .sp
- .if n \{\
- .RS 4
- .\}
- .nf
- * Ccanlint:
- * // Test module foolish for me great!
- * info_documentation_exists FAIL
- * // Error for the file may be only
- * tests_pass_valgrind_noleaks run\-mytest\&.c:FAIL
- .fi
- .if n \{\
- .RE
- .\}
- .PP
- \fBinfo_exists\fR
- .RS 4
- CCAN module must have
- \fI_info\fR
- file describing\&. No this score is 0\&. However,
- \fBccanlint\fR
- question may help to write one\&.
- .RE
- .PP
- \fBdepends_exist\fR
- .RS 4
- \fI_info\fR
- file CCAN other module without saying, must find\&. It is not score 0\&.
- .RE
- .PP
- \fBobjects_build\fR
- .RS 4
- All build purposes
- \fI\&.c\fR
- in the top dir\&. Not score 0\&.
- .RE
- .PP
- \fBmodule_builds\fR
- .RS 4
- Link to all objects in an object module\&. Not score 0\&.
- .RE
- .PP
- \fBdepends_accurate\fR
- .RS 4
- Include other CCAN modules, we must say we need to
- \fI_info\fR
- depends\&. Only one thing allows different, you can use
- \fIccan/tap\fR
- for testing anyway\&.
- .RE
- .PP
- \fBdepends_build\fR
- .RS 4
- We try to generate the CCAN module you need\&.
- .RE
- .PP
- \fBexamples_exist\fR
- .RS 4
- Rather hope that the comments in the header, and
- \fI_info\fR\&. An example of the section in each, please! Maybe more,
- \fBccanlint\fR
- very happy morning\&.
- .RE
- .PP
- \fBexamples_relevant\fR
- .RS 4
- Example, do not cut and paste away! You say the name of the thing in the example or
- \fBccanlint\fR
- unhappy\&.
- .RE
- .PP
- \fBhash_if\fR
- .RS 4
- Module wants
- \fBccanlint\fR
- \fIconfig\&.h\fR
- "#define HAVE_FEATURE" for all feature\&. Function test "#if HAVE_FEATURE" no "#ifdef HAVE_FEATURE" because user might not know about the role at all\&. Intelligent GCC flag
- \fI\-Wundef\fR
- say HAVE_FEATURE not 0, not 1! but only if the use of
- \fI#if\fR\&.
- .RE
- .PP
- \fBinfo_documentation_exists\fR
- .RS 4
- \fI_info\fR
- file format is pretty comments\&. Copying someone\&. It is not difficult write documentation!
- .RE
- .PP
- \fBinfo_summary_single_line\fR
- .RS 4
- Comments from a top line often describe the function or macro\&.
- \fI_info\fR
- comment top line describes complete module\&. Characteristics make you scream!
- .RE
- .PP
- \fBlicense_exists\fR
- .RS 4
- The lawyers eat me\&.
- \fI_info\fR
- have
- \fILicense:\fR
- in the observation and LICENSE file there\&. In general, is the link:
- \fBccanlint\fR
- offer create a link, if they know
- \fILicense:\fR\&.
- .RE
- .PP
- \fBlicense_comment\fR
- .RS 4
- Attorney everywhere\&. Please put a comment saying something like "GPL Version 4\&. Read LICENSE\&." in all source files in the directory\&.
- .RE
- .PP
- \fBlicense_file_compat\fR
- .RS 4
- Do not lie about the license!
- \fBccanlint\fR
- search files, see the license of another, angry here\&.
- .RE
- .PP
- \fBlicense_depends_compat\fR
- .RS 4
- Hostile to BSD license module, but requires another module of the GPL\&. Perhaps poor encoder think all BSD code, unloading and damage attorney stick! Ay ay!
- .RE
- .PP
- \fBmain_header_exists\fR
- .RS 4
- \fBccanlint\fR
- know the module name directory name\&. Expect the same name for header\&.
- .RE
- .PP
- \fBheaders_idempotent\fR
- .RS 4
- Good header
- \fI#include\fR
- many time happy\&. Rap header around easy\&.
- \fBccanlint\fR
- say it can fix too\&. Always work\&.
- .RE
- .PP
- \fBmain_header_compiles\fR
- .RS 4
- Simple program
- \fI#include\fR
- main header compile\&.
- .RE
- .PP
- \fBavoids_cpp_reserved\fR
- .RS 4
- C++ programmer to include code\&. Not like them anyway, maybe, but wrong end your program, do mourn\&. Only main header compile C++ and if trying to compile C\e++ module stupid to pieces\&.
- .RE
- .PP
- \fBno_trailing_whitespace\fR
- .RS 4
- Linux kernel programmers more, solve the problem for the space of the final ban the line\&. Now all lots of hackers working to fix it\&. Want to famous and Linux? Leave extra space too!
- .RE
- .PP
- \fBexamples_compile\fR
- .RS 4
- \fBccanlint\fR
- very smart! Take
- \fIExample:\fR
- from a comment in the header and
- \fI_info\fR\&. First try to compile anything\&. If not, add many headers and maybe put inside the function\&. It does not work, adds the latest example\&. If the last example has
- \fI\&...\fR
- try that maybe\&. Sometimes too complicated!
- \fI\-vv\fR
- or
- \fI\-\-keep\fR
- to see why it broke\&. Or maybe bad example
- \fBccanlint\fR
- says wow!
- .RE
- .PP
- \fBexamples_run\fR
- .RS 4
- If the example program that comments like
- \fI// given foo outputs bar\fR
- \fBccanlint\fR
- will run the food program
- \fIfoo\fR
- in the command line and standard input\&. Happy if
- \fIbar\fR
- are out\&. You can do \*(Aq or " about the production or determined\&. You can also
- \fIoutput contains\fR
- more relaxed controls\&.
- .RE
- .PP
- \fBmodule_links\fR
- .RS 4
- CCAN link to the program module simply no error\&.
- .RE
- .PP
- \fBobjects_build_with_stringchecks\fR
- .RS 4
- Module
- \fIccan/str\fR
- is super difficult to detect errors debugging chain\&.
- \fBccanlint\fR
- use with the module and see break!
- .RE
- .PP
- \fBtests_exist\fR
- .RS 4
- You have CCAN module directory called
- \fItest\fR\&. You have proof here\&. If there is no proof,
- \fBccanlint\fR
- still offer make proof for you\&.
- .RE
- .PP
- \fBtests_compile\fR
- .RS 4
- In
- \fItest\fR
- which has four such tests, start with different name\&.
- \fIrun\fR
- compile the test files, but no link to the module, you
- \fI#include\fR
- to get the bits of the module\&.
- \fIapi\fR
- test compile and link with the module\&.
- \fIcompile\-ok\fR
- as
- \fIrun\fR
- but only build\&.
- \fIcompile\-fail\fR
- compile, but when
- \fIFAIL\fR
- set has to break or alert\&. This good for module supposed to warn\&.
- .RE
- .PP
- \fBtest_helpers_compile\fR
- .RS 4
- Other files
- \fItest\fR? Compilation of links to all tests\&. Ask for help\&.
- .RE
- .PP
- \fBtests_pass\fR
- .RS 4
- \fIrun\fR
- and
- \fIapi\fR
- test happy departure\&. If not happy, offer debugger\&.
- .RE
- .PP
- \fBtests_pass_valgrind\fR
- .RS 4
- \fBvalgrind\fR
- the tool of all
- \fIrun\fR
- and
- \fIapi\fR
- slow test\&. However, we found many errors! If
- \fBvalgrind\fR
- test rest,
- \fI_info\fR
- have
- \fBccanlint\fR
- section, make "tests_pass_valgrind TESTNAME:FAIL"\&. If required valgrind additional option, "tests_pass_valgrind TESTNAME:\-\-option"\&.
- .RE
- .PP
- \fBtests_pass_valgrind_noleaks\fR
- .RS 4
- \fBvalgrind\fR
- complain if the memory leak test\&.
- \fI_info\fR
- can also be disabled\&.
- .RE
- .PP
- \fBtests_compile_coverage\fR
- .RS 4
- Compile
- \fIrun\fR,
- \fIapi\fR
- test coverage\&. Fun if not here!
- .RE
- .PP
- \fBtests_coverage\fR
- .RS 4
- Run tests again, find lines that never try! Half of the lines 1 point 3/4 getting 2 points\&. Limit of 5 points, but the extra point for all lines of evidence\&. Not win unless the module silly or use gimmick
- \fIccan/failtest\fR\&.
- .RE
- .PP
- \fBreduce_features\fR
- .RS 4
- Code use
- \fIHAVE_FEATURE\fR
- make special config\&.h turned off\&. Not stupid like HAVE_BIG_ENDIAN though!
- .RE
- .PP
- \fBdepends_build_without_features\fR
- .RS 4
- Make modules CCAN need\&. config\&.h but not more features\&.
- .RE
- .PP
- \fBobjects_build_without_features\fR
- .RS 4
- Make the module again, but not more features\&.
- .RE
- .PP
- \fBtests_helpers_compile_without_features\fR
- .RS 4
- Helpers do try again, but not more features\&.
- .RE
- .PP
- \fBtests_compile_without_features\fR
- .RS 4
- Collect the tests again, but not more features\&.
- .RE
- .sp
- \fBtests_pass_without_features\fR: Run tests again, but not more features\&.
- .SH "BUGS"
- .sp
- \fBccanlint\fR rapid change\&. The bad man, bad page\&.
- .SH "AUTHOR"
- .sp
- Rusty Russell wrote \fBccanlint\fR\&. Helping others, but most break Rusty\&.
- .SH "RESOURCES"
- .sp
- Main web site: http://ccodearchive\&.net/
- .sp
- Wiki: https://github\&.com/rustyrussell/ccan/wiki/
- .SH "COPYING"
- .sp
- This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version\&.
|