Bugslist

From John's wiki
Revision as of 02:12, 14 December 2016 by Sixsigma (talk | contribs) (→‎Tasks: updating tasks...)
Jump to navigation Jump to search

bugslist.php is John's TODO list management script. If you use this script you might be interested in ProgClub Timestamp so you can copy/paste the comment label syntax. For other projects see projects.

Status

Released! But there's stuff TODO.

Version

bugslist.php v0.1.1237
Copyright © 2016 John Elliot V
License GPLv3+: GNU GPL version 3 or later.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Version control info

Timestamp.......: 2016-12-14 03:08:18 +1100 (Wed, 14 Dec 2016)
UTC timestamp...: 2016-12-13 16:08:18Z
Date............: 2016-12-14
Time............: 03:08:18
Author..........: jj5
File............: bugslist.php
Revision........: 1237
URL.............: bugslist.php

Administration

Contributors

People who have contributed to this project. Newest on top.

Copyright

Copyright © 2016, Contributors.

License

Licensed under the GNU GPL version 3 or later.

Resources

Help

Usage: php path/to/bugslist.php [OPTION]...
This is a source code processing and reporting tool to help with software
development project management. It processes files in the specified
directory and matches special comment syntax to get notes and work items
which it then reports on. Output reports are in MediaWiki wiki text syntax
designed to be included in your project wiki.

Comment label syntax

The heart of bugslist.php is the comment label syntax you use in your
source code. It's basically:
  DATE USER DASH TYPE[PRIORITY][:!] TEXT
For example: 2016-12-14 jj5 - HACK[HIGH]: expedient, you say?
The date is in ISO format, the user must be a valid UNIX user, and the dash
is just to try and limit false positives. The TYPE indicates what sort of
item this is; it can be one of the types listed below. Your type can be
suffixed with an optional priority within square brackets. After the
optional priority your type must be suffixed with punctuation, either ':' or
'!'. The TEXT follows until the end of the line and on to subsequent lines too.

Item types

The following item types are supported in comment labels:
Type................: Description..............................: Priority..:
 Red-flags..........:
  WARNING...........: something to be careful of...............: HIGH
  TEMP..............: a note for code that should be removed...: HIGH
 Stuff to do........:
  BUG...............: something that needs to be fixed.........: HIGH
  TEST..............: something that needs to be tested........: HIGH
  TODO..............: something that needs to be done..........: MEDIUM
   FIXME............: a HIGH priority alias for TODO...........: HIGH
   NICE.............: a LOW priority alias for TODO............: LOW
  HACK..............: something that needs to be improved......: LOW
  CONSIDER..........: something to consider or think about.....: LOW
   THINK............: an alias for CONSIDER....................: LOW
 Stuff that's done..:
  FIXED.............: a BUG that has been fixed................: HIGH
  DONE..............: something that has been done.............: MEDIUM
  COMMIT............: a VCS commit log.........................: LOW
 Notes..............:
  REFERENCE.........: a reference, e.g. a URL..................: LOW
   REF..............: an alias for REFERENCE...................: LOW
   SEE..............: an alias for REFERENCE...................: LOW
  NOTE..............: notes, or items without a label..........: LOW
  DEBUG.............: an item for debugging purposes...........: DEBUG

Item priority

You can use a priority number, priority letter, or priority name to
indicate a priority:
  #: Abbr: Name:      Default:
  0: C, !: CRITICAL:  N/A
  1:    H:     HIGH:  WARNING, TEMP, BUG, TEST, FIXME, FIXED
  2:    M:   MEDIUM:  TODO, DONE
  3:    L:      LOW:  HACK, COMMIT, REFERENCE, NOTE, NICE, CONSIDER
  4:    D:    DEBUG:  DEBUG

Comment syntax

Comment syntax for various programming languges is supported:
  Plain text...: comment labels begin at the first character on the line
  C++, etc //..: comment labels begin after '// ' (the space is important)
  HTML/XML.....: comment labels are within: <!-- -->
  Perl #.......: comment labels begin after '# ' (the space is important)
  C/CSS........: comment labels are within: /* */

Filtering options

-u, --user=USER       include items for USER
-d, --date=DATE       include items for DATE
    --today           include items for today only (default if not debugging)
    --yesterday       include items for yesterday only
-t, --type=TYPE       include items by type, will affect report order.
                      Duplicates are ignored.
-y, --priority=PRIORITY  include items with particular PRIORITY.
    --all             report on all users, dates, types, and priorities.

File-system options

-p, --path=PATH       process files in PATH, current directory if omitted
-f, --file=LIST       process files in comma-separated LIST, relative to PATH
-i, --include=EXTENSIONS  comma-separated list of included file extensions
-e, --exclude=EXTENSIONS  comma-separated list of excluded file extensions
                      Note: excludes override includes. This is useful when
                        you want to exclude missing extensions () which
                        are included by default.
-s, --skip=DIRS       comma-separated list of directory paths to skip
-k, --keep=DIRS       comma-separated list of directory paths to keep
                      ** BE VERY CAREFUL **
                      e.g.:
                        'bin,obj' matches 'p/t/colbbin' and 'p/t/my-obj'
                        '/bin,/obj' matches 'path/to/bin' and 'path/to/obj'
                      a warning is emitted for DIRS with no leading '/'
                      Note: keeps override skips

Report options

-a, --aggregate=FIELD report aggregation. Duplicates are ignored.
                      A heading is printed for each aggregated field.
-c, --collate=FIELD   report sorting. Duplicates are ignored.
                      Default sorting uses binary comparision rather than
                      locale sensitive comparison which is probably what
                      you want. For --aggregate and --collate uppercase
                      FIELD sorts descending.
                      e.g. 'dUp' selects by date, user desc, and path
-h, --heading=FORMAT
                      heading format options. Duplicates are ignored.
-o, --output=FIELD|FORMAT|OPTIONS
                      report output options. Duplicates are ignored.
-l, --level           level of heading to start at (default 2)
+N, --natural         use locale sensitive sorting instead of binary sorting
+B, --binary          use binary sorting (This is the default. Redundant? :)
+Q, --quiet           disable warnings, stats, and progress on stderr
+S, --show-stats      enable statistics report on stderr
-S, --hide-stats      disable statistics report on stderr (default)
+P, --show-progress   enable progress report on stderr
-P, --hide-progress   disable progress report on stderr (default)
+O, --show-options    report on user options on stderr
-O, --hide-options    disable user options report (default)
+W, --show-warnings   report warnings on stderr (default)
-W, --hide-warnings   disable warnings

Other options

    --help            display this help text and exit
    --version         display version information and exit
+V, --vcs             parse version control (Subversion) logs
+D, --debug           some handy defaults, when debugging or not
+X, --exit            exit without reporting (useful with --show-stats)

Format specifications

 USER is comma-separated list of usernames.
 Use '*' for all users; '?' for current user.
 DATE is ISO formatted date prefix, e.g.:
  '2016' for all items in 2016,
  '2016-01' for items in Jan 2016,
  '2016-,01,02' for items in Jan/Feb 2016,
  '2016-01-,01,02' for items on 1st/2nd Jan 2106,
  '2016-01-02,2016-01-04' for 2nd/4th Jan 2016.
 Use '*' for all dates.
 TYPE is a string of abbreviations or comma-separated list of item types.
 Supported types are:
  Red-flags:
   WARNING....: something to be careful of
   TEMP.......: a note for code that should be removed
  Stuff to do:
   BUG........: something that needs to be fixed
   TEST.......: something that needs to be tested
   TODO.......: something that needs to be done
   HACK.......: something that needs to be improved
   CONSIDER...: something to consider
  Stuff that's done:
   FIXED......: a BUG that has been fixed
   DONE.......: something that has been done
   COMMIT.....: a VCS commit log
  Notes:
   REFERENCE..: a reference, e.g. a URL
   NOTE.......: notes, or items without a label
   DEBUG......: an item for debugging purposes
  e.g. 'TODO, NOTE'
 Supported abbreviations are:
   w: WARNING
   m: TEMP
   b: BUG
   e: TEST
   t: TODO
   h: HACK
   c: CONSIDER
   f: FIXED
   d: DONE
   v: COMMIT
   r: REFERENCE
   s: REFERENCE
   n: NOTE
   g: DEBUG
  e.g. 'bht' is 'BUG, HACK, TODO'
 Use '*' for all types.
 PRIORITY is a comma-separeted list of priorities or a range of priorities.
 A priority can be indicated by a priority number, a priority letter or
 abbreviation, or a priority name. Use '*' for all priorities. See the item
 proirity section above for supported values.
 FIELD is a string of abbreviations or comma-separated list of fields.
 Supported fields are:
   user: group/sort by user
   date: group/sort by date
   type: group/sort by item type
   priority: group/sort by item priority
   both: group/sort by path and file
   path: group/sort by path
   file: group/sort by file, do not prefix path.
         This may not be what you want, will merge
         files from different directories.
   line: group/sort by line number
   name: group/sort by name
   link: group/sort by link
   reference: group/sort by reference
   initials: group/sort by initials
   new-lines: group/sort by number of new lines
   old-lines: group/sort by number of old lines
   line-diff: group/sort by lines difference
   revision: group/sort by VCS revision number,
   text: group/sort by text
 Supported abbreviations are:
   u: user
   d: date
   t: type
   y: priority
   b: both
   p: path
   f: file
   l: line
   m: name
   k: link
   s: reference
   i: initials
   n: new lines
   o: old lines
   c: line diff
   r: VCS revision number
   x: text
 FORMAT is a string of abbreviations or comma-separated list of format
   options.
 Supported format options are:
   plain-user: don't format user
   plain-date: don't format date
   plain-type: don't format type
   plain-priority: don't format priority
   plain-both: don't format path/file
   plain-path: don't format path
   plain-file: don't format file
   plain-line: don't format line
   plain-name: don't format name
   plain-link: don't format link
   plain-reference: don't format reference
   plain-initials: don't format initials
   plain-new-lines: don't format new lines
   plain-old-lines: don't format old lines
   plain-line-diff: don't format line diff
   plain-revision: don't format VCS revision number
 Supported abbreviations are:
   U: plain-user
   D: plain-date
   T: plain-type
   Y: plain-priority
   B: plain-both
   P: plain-path
   F: plain-file
   L: plain-line
   M: plain-name
   K: plain-link
   S: plain-reference
   I: plain-initials
   N: plain-new-lines
   O: plain-old-lines
   C: plain-line-diff
   R: plain-revision
 e.g. 'UT' disables formatting for user and type values.
 OPTIONS is a string of abbreviations or comma-separated list of report
   options.
 Supported report options are:
   html: output to HTML instead of wiki text
   table: output to HTML/wiki table instead of list
 Supported abbreviations are:
   h: html
   a: table
 e.g. 'ha' selects HTML with tables

Feedback

Report bugs to: jj5@progclub.org

Source code

You can read the source code.

You can browse the repository.

You can checkout the latest stable script, or the full stable system (including tests and release scripts).

You can checkout the latest development script, or the full development system (including tests and release scripts).

Links

Specifications

Functional specification

See help for information about how the script is supposed to work.

Technical specification

The script is a PHP CLI script.

Notes

Notes for implementers

If you are interested in incorporating this software into your project, here's what you need to know:

Just copy-and-paste your way to victory! Feel free to ask questions.

Notes for developers

If you're interested in contributing to this software, here's what you need to know:

Send your patch to jj5@progclub.org along with a statement that you are willing to be listed in the contributors section of the documentation and willing to license your contribution under the license.

For security reasons write access to jjrepo is only available for John. It's basically my private repository. If you'd like to hack on projects where you do have checkin permissions on the Subversion repository, along with infrastructure for running your code, then why not head over to ProgClub and register?

Notes from the code

Following are notes from the source code, generated by bugslist.php!

/ : bugslist.php

  • JE: bugslist.php: Windows is unsupported... no effort has been made to be compatible with the Windows file system. If you would like to fix that I will accept your patch!
  • JE: bugslist.php: there's a bunch of error handling stuff we setup up-front
  • JE: bugslist.php: program errors are things which shouldn't happen, they are numbered from 10 to 19. User errors are things that happen when the user makes a mistake or certain runtime conditions occur, they are numbered from 20 to 99. External program errors are between 100 and 199.
  • JE: bugslist.php: Following is the meta-data from SVN. Note that the svn keyward 'Header' is not used. To configure svn keywords: svn propset svn:keywords "Date Revision Author HeadURL Id" bugslist.php
  • JE: bugslist.php: we set constants and configure globals before loading the config file(s)...
  • JE: bugslist.php: this is the global code:
  • JE: bugslist.php: we load the config file(s) here...
  • JE: bugslist.php: we have an application config file, include it. note that if it's the same as the local config file it will only be included once.
  • JE: bugslist.php: we have a local config file... include it:
  • JE: bugslist.php: Main application logic starts here...
  • JE: bugslist.php: configure our global defines, this is done after loading the config file if one exists...
  • JE: bugslist.php: flag whether running in DEBUG mode or not...
  • JE: bugslist.php: can conditionally switch on debug output...
  • JE: bugslist.php: configure terminal width:
  • JE: bugslist.php: item types. Doesn't include aliases like 'SEE', 'FIXME', 'NICE', etc.
  • JE: bugslist.php: FIXME is an alias for TODO
  • JE: bugslist.php: SEE/REF are aliases...
  • JE: bugslist.php: NICE is an alias for TODO
  • JE: bugslist.php: FIXME is a HIGH priority TODO
  • JE: bugslist.php: NICE is LOW priority TODO
  • JE: bugslist.php: configure regular expressions:
  • JE: bugslist.php: $file_extension_include and $file_extension_exclude are file extensions supported or not. For debugging purposes an included 'phar' and excluded 'properties' and 'xcf' are omitted so they should show up in 'unknown file types'...
  • JE: bugslist.php: exception_handler(...) will exit (at time of writing!) but just to be safe:
  • JE: bugslist.php: Last in wins!
  • JE: bugslist.php: parse_svn() will have potentially stale data if 'svn up' isn't called prior. But we don't want to call 'svn up' all the time (especially from unit tests) because it's slooooooowwwww. So better to just live with the stale revision info from parse_svn() when it's not really needed. Read the code for parse_svn() to see what might be out-of-date.
  • JE: bugslist.php: overwrite $type_filter array
  • JE: bugslist.php: $counter tracks the number of pushd()'s so we can undo with popd()...
  • JE: bugslist.php: $type can be 'none', 'svn', or 'git' presently
  • JE: bugslist.php: if we pushd( '..' ) on '/' the current directory doesn't change, and we're done.
  • JE: bugslist.php: we don't call shell() because we don't want to exit on error (we ignore errors here)...
  • JE: bugslist.php: bail if we don't have svn...
  • JE: bugslist.php: this function assumes we're in the project directory
  • JE: bugslist.php: svn commits are LOW priority COMMIT items
  • JE: bugslist.php: being a bit anal here, probably only need to test either $path or $file for null...
  • JE: bugslist.php: add previous item:
  • JE: bugslist.php: $slash_index won't be zero.
  • JE: bugslist.php: being a bit anal here, probably only need to test either $path or $file for null...
  • JE: bugslist.php: add last item:
  • JE: bugslist.php: this is ugly, but it's fast and safe (at time of writing!)
  • JE: bugslist.php: at this point it's OK to override the $file variable
  • JE: bugslist.php: clear the progress report
  • JE: bugslist.php: priority for FIXME can be different to TODO
  • JE: bugslist.php: priority for NICE can be different to TODO
  • JE: bugslist.php: $item_type is null to return false on invalid spec
  • JE: bugslist.php: if we can't find the priority from the spec warn then fallthrough to get by item type...
  • JE: bugslist.php: we can't find a priority so assume CRITICAL
  • JE: bugslist.php: we could imagine support for other types and/or is_numeric()...
  • JE: bugslist.php: START: reset lower headings
  • JE: bugslist.php: END: reset lower headings
  • JE: bugslist.php: wildcards are supported
  • JE: bugslist.php: if $fail is false then a boolean success value is returned. If $fail is true (the default) the process is terminated on error.
  • JE: bugslist.php: returns false if no directory, true on success, or exits otherwise.

bin : open-doco.sh

test : fast.sh

test : new.sh

  • JE: new.sh: don't edit this file. Edit process.sh...
  • JE: new.sh: don't edit this file. Edit process.sh...
  • JE: new.sh: include your arguments on the following line. If you have multiple equivalent tests (same input/output) you can duplicate the following line with different arguments.
  • JE: new.sh: the process.sh script is not executed (it is sourced).

test : test.inc.sh

  • JE: test.inc.sh: this file is sourced by a script runner. It defines a bunch of functions to run various kinds of tests.

test/args : run.sh

  • JE: run.sh: not a good idea to pass '/' or anything with lots of data in it...
  • JE: run.sh: processing /tmp probably isn't a good idea...

test/pushd : run.php

  • JE: run.php: popd should fail if uninitialised...

test/vcs-type : run.sh

Tasks

TODO

MEDIUM priority

LOW priority

  • bugslist.php: MediaWiki integration would be nice. I.e. automatically insert reports into the MediaWiki database. Might be smarter to go in through the front-end via HTTP (need HTTP auth and a valid cookie for that... doable.)
  • bugslist.php: linting for invalid comment labels, e.g. HAKK, missing/invalid punctuation, etc.

HACK

LOW priority

CONSIDER

LOW priority

  • bugslist.php: for svn items is the line number 'svn' or is it the first changed line in the associated file?
  • bugslist.php: add MAINT type w/ --maint option to report on maintenance gotchas? (i.e. stuff you need to know about for doing a release etc.)
  • bugslist.php: add support for ';' list delimiters in addition to ','..?
  • bugslist.php: add support for multiple reports delimited with ';'..?
  • bugslist.php: add support for FEATURE/IMPROVEMENT items..?
  • bugslist.php: alias 'TASK' to 'TODO'..?
  • bugslist.php: consider support for 'Z' => 'DEBUG'..?
  • bugslist.php: make null headings a command-line/config option? At the moment null headings are skipped, not reported.

DONE

2016-12-14

  • JE: bugslist.php: read options into globals.
  • JE: bugslist.php: we use '.debug' files for testing...
  • JE: bugslist.php: we fixup some filter options which might not be arrays when they should be.
  • JE: bugslist.php: fix up our directory filters...
  • JE: bugslist.php: $options are now validated.
  • JE: bugslist.php: if we have a path option chdir to it.
  • JE: bugslist.php: file options are validated.
  • JE: bugslist.php: initialise our main local variables.
  • JE: bugslist.php: our VCS type is now auto-detected.
  • JE: bugslist.php: do our svn stuff if we're in an svn working copy.
  • JE: bugslist.php: if user has specified files with --file then process them.
  • JE: bugslist.php: if user hasn't specified files with --file then process the root directory.
  • JE: bugslist.php: exit if --exit was specified.
  • JE: bugslist.php: sort our $data. Sorting is by --aggregate then --collate.
  • JE: bugslist.php: default order is based on the 'order' integer which is the order we discovered our items. (It's a counter.)
  • JE: bugslist.php: report based on user options. Not that only report_wiki_list() is actually implemented at the moment.
  • JE: bugslist.php: all user options are now initialised in get_default_options().
  • JE: bugslist.php: counters are now initialised in get_initial_count().
  • JE: bugslist.php: help has been rewritten to avoid duplication.
  • JE: bugslist.php: print_options() has been updated to use new $options array and report on more options (e.g. vcs type, exit, etc.)
  • JE: bugslist.php: print_stats() now reports number of warnings.
  • JE: bugslist.php: $type_regex is now an unconcatenated string because string concatenation for a constant didn't seem to work in PHP v5.3... it's annoying that it doesn't fit in 80 cols!
  • JE: bugslist.php: get_priority() now collects $warnings...
  • JE: bugslist.php: configure_globals() is now comprehensive. All globals (that aren't entirely managed inside a function, such as $pushd_stack in pushd() and popd()) are now initialised here.
  • JE: bugslist.php: $*_options and $*_abbreviations have now been standardised and initialised in configure_globals().
  • JE: bugslist.php: shell() now returns an error level between 100 and 199. It's the exec'd error level plus 100.
  • JE: bugslist.php: we now have a $changed output variable on pushd() which indicates if the current directory was actually changed or not. This is useful if you find yourself calling pushd( '..' ) on /.
  • JE: bugslist.php: report --heading options
  • JE: bugslist.php: the 'name' and 'line' options no longer include the revision number... need an option which does: that option is 'link'
  • JE: bugslist.php: change 'name' from 'n' to 'm'.
  • JE: bugslist.php: default options have been factored into get_default_options().
  • JE: bugslist.php: user options have been factored into $options array.
  • JE: bugslist.php: command-line argument parsing has been factored into read_*_arg() methods.

2016-12-13

2016-12-12

  • JE: open-doco.sh: we load the wiki edit URLs in Firefox and open the generated wiki text reports in Kate (Kate is a text editor...)
  • JE: bugslist.php: cancel duration reporting during debugging
  • JE: bugslist.php: there's an issue where if no-link options are specified and no cell options are specified we get a report with blank list items. The fix is to check if any cell items have been specified and if not automatically add 'text'.
  • JE: bugslist.php: path is '/' for base/project directory...
  • JE: bugslist.php: removed revision from line/name links
  • JE: bugslist.php: type wildcards are resolved at parse time.
  • JE: bugslist.php: reporting by text be might be useful..?
  • JE: bugslist.php: add svn items to COMMIT type rather than importing them as DONE.
  • JE: bugslist.php: svn integration
  • JE: bugslist.php: removed 'path-file', it's 'both' now...
  • JE: bugslist.php: terminology change: 'alias' to 'abbreviation', an alias is a type alias like FIXME and SEE.
  • JE: bugslist.php: update args unit tests with new command-line args
  • JE: bugslist.php: DEBUG is 'g', not 'z'.
  • JE: bugslist.php: changed --types to --type for consistency, same with --headings and --options.
  • JE: bugslist.php: added --file doco
  • JE: bugslist.php: fixed issue where newline was emitted after empty report.
  • JE: bugslist.php: issue where sub wiki items weren't indented
  • JE: run.sh: invalid level tests
  • JE: run.sh: valid level tests
  • JE: run.sh: invalid type tests
  • JE: run.sh: invalid aggregate tests
  • JE: run.sh: invalid heading tests
  • JE: run.sh: valid heading options tests
  • JE: run.sh: invalid heading option abbreviation tests
  • JE: run.sh: invalid output options tests

2016-12-11

  • JE: bugslist.php: added support for 'line' and 'line-number'.
  • JE: bugslist.php: basic unit testing framework has been implemented.
  • JE: bugslist.php: user can exit without reporting with +X. In this case error level is zero.
  • JE: bugslist.php: implement no-link heading options
  • JE: bugslist.php: implement no-link options
  • JE: bugslist.php: add 'both' option for path/file
  • JE: bugslist.php: don't output cells in report if they are missing
  • JE: bugslist.php: added support for initals option, links to user wiki
  • JE: bugslist.php: start heading level is configurable...
  • JE: bugslist.php: added --level for initial heading level, defaults to 2.
  • JE: bugslist.php: load the svn globals
  • JE: bugslist.php: priority suffix is a config option now.
  • JE: bugslist.php: have counter for total LOC processed.
  • JE: bugslist.php: have "no link" options for headings and cells. The no-link option removes URLs from wiki/html output for the value specified.
  • JE: bugslist.php: removed support for NICE priority level, it added complexity and was kinda unclear. Gone now.
  • JE: bugslist.php: added support for wiki user links (with initials). Configure in config file with e.g.:
    • $config[ 'user' ][ 'jj5' ][ 'initials' ] = 'JE';
    • $config[ 'user' ][ 'jj5' ][ 'wiki-user' ] = 'John';
  • JE: bugslist.php: we have support for emitting wiki categories now. Configured in config file as e.g.:
    • $config[ 'wiki' ][ 'category' ][ $type ][ $value ] = $category_name
  • JE: bugslist.php: integer values are sorted numerically now (not as strings...)

2016-12-10

2016-12-09

  • JE: bugslist.php: don't output spurious leading/trailing new lines
  • JE: bugslist.php: add support for formatting options and include optional line numbers.
  • JE: bugslist.php: check for application config file in script dir...
  • JE: bugslist.php: $config_path is of no further use... clear it.
  • JE: run.sh: invalid command-line switch tests
  • JE: run.sh: invalid username tests
  • JE: run.sh: valid username tests
  • JE: run.sh: invalid datespec tests
  • JE: run.sh: valid datespec tests
  • JE: run.sh: valid type tests
  • JE: run.sh: invalid type abbreviation tests
  • JE: run.sh: valid type abbreviation tests
  • JE: run.sh: invalid path tests
  • JE: run.sh: valid path tests
  • JE: run.sh: invalid include tests
  • JE: run.sh: valid include tests
  • JE: run.sh: required argument missing for command-line switch tests
  • JE: run.sh: invalid exclude tests
  • JE: run.sh: valid exclude tests
  • JE: run.sh: valid skip tests
  • JE: run.sh: valid keep tests
  • JE: run.sh: valid aggregate tests
  • JE: run.sh: optional argument missing for command-line switch tests
  • JE: run.sh: invalid aggregate abbreviation tests
  • JE: run.sh: valid aggregate abbreviation tests
  • JE: run.sh: valid heading option abbreviation tests
  • JE: run.sh: valid output options tests
  • JE: run.sh: invalid output option abbreviation tests
  • JE: run.sh: valid output option abbreviation tests

2016-12-07

2016-12-06

  • JE: bugslist.php: support PRIORITY for TODO etc. By default:
    • 0: CRITICAL
    • 1: HIGH
    • 2: MEDIUM
    • 3: LOW
    • 4: DEBUG
  • JE: bugslist.php: option to print line numbers
  • JE: bugslist.php: improved reporting to group by date, user, etc.
  • JE: bugslist.php: implemented descending sorting
  • JE: bugslist.php: implemented natural case sorting
  • JE: bugslist.php: there's a problem with multiline comments below, see the PRIORITY TODO item. The issue is the preceding item about line numbers...
  • JE: bugslist.php: include reporting options, and other new options
  • JE: bugslist.php: try for config file in program directory...
  • JE: bugslist.php: check for local config file in cwd...
  • JE: bugslist.php: added support for wildcard users...
  • JE: bugslist.php: added support for wildcard dates...
  • JE: bugslist.php: added to included extensions, made excluded extensions override included extensions

2016-12-05

  • JE: bugslist.php: don't allow empty path spec
  • JE: bugslist.php: changed support for files with no extension, changed from excluded by default to included by default (for shell scripts, etc).