Changes¶
Changes in vX.X (not released):
TBW
Changes in v1.3.3 (2022-10-27):
New plugin hooks, “lineRaw”, “bodyRaw” and “unknownCommand”. [FR #39, #40]
Better handling of oo mixin.
Changes in v1.3.2 (2021-02-01):
Use new Windows binary for wrapping. [Bug #38]
Keep instrumentation variables in instrumentation namespace. [Bug #35]
Instrumentation of bindings with +. [Bug #33]
Handle expansion in a special foreach case. [Bug #36]
Handle log files in idir better. [Bug #30]
Changes in v1.3.1 (2019-08-23):
New variable type “option”. Annotates things that provides switches/options.
Expansions are considered valid option pairs without “option” type.Apply filters to normal message, even when formatting as HTML. [Bug #21, #23]
Do not try to guess types in arrays unless consistent or explicit. [Bug #22]
Handle if a file is sourced twice during coverage. [Bug #26]
Nocover pragma now covers the entire block. [Bug #31]
Allow multiple source files with the same nume during code coverage. [Bug #32]
New option -nosource, to stop overloading source in instrumented files.
Changes in v1.3 (2018-10-03):
Handle argument expansion with lappend.
Use type varName to silince note about upvar usage. [Bug #15]
Support multiple plugins.
Added -pluginpath option.
New plugin hooks, “writeHeader” and “syntaxComment”.
Include mathop and mathfunc in database.
Added regexp check. (re token)
Added multi tokens to support syntax of some commands.
Database for 8.6 default, 8.7 added, 8.4 removed.
Allow GUI to add files without extension.
Added syntax data for text widget.
Added syntax data for many dict sub commands. [Bug #13]
Fixed a bad check on constant array index. [Bug #1]
Thanks to Tobias Mark for contributions.
Changes in v1.2.5 (2017-01-09):
New inline command “vartype” to just annotate a variable with a type. Using “variable” for that purpose could mask bugs.
New inline command “option+” to handle manually added options. Useful together with “copy” when you extend e.g. a widget.
New -len option to make Nagelfar check max line length.
Corrected a bug where trace execution and variable x combination failed.
Corrected syntax of eval command in sqlite3 database.
New variable type “script” used to annotate things that build e.g. call-backs. This is used to clean up “No braces around code” notifications.
Changes in v1.2.4 (2016-08-06):
Support oo::define.
Changes in v1.2.3 (2016-08-05):
Support namespace path. Added inline directive “nspath”.
Avoid warning with code that comes from a variable. [Bug #10]
Handle if a word starts with #. [Bug #9]
Added -idir option to redirect temporary files created during code coverage.
Added -markupfull option to include stats of covered lines in markup.
Allow code coverage to run in parallell. [FR #8] Thanks to Sven Beyer.
Handle all lmap variants, like foreach.
Handle namespace import with glob pattern. (exports are not tracked so it just assumes existing procs are exported) [Bug #7]
Do not introduce side effect when instrumenting implicit else. [Bug #5]
Line number reporting could be wrong with {*} operator. [Bug #6]
Made a utility for package database creation.
More package databases (fileutil, textutil, profiler, ftp)
Changes in v1.2.2 (2015-03-08):
Various bug fixes:
Handle switch’s variable options.
Handle instance variables in a destructor.
Handle standard varname method in tcloo.
Do not consider “-” strange in command name.
Removed note about unaligned brace in some reasonable cases.
Handle multiple cv/cl args to a command with a common context.
Changes in v1.2.1 (2015-02-07):
Extended plugins with hooks for variable read and write.
Extended plugins with variable info to all hooks.
Added sqlite3 to package database.
Changes in v1.2 (2013-01-04):
Added handling of databases for packages. Databases for a few packages like Snit are included.
Auto-load package definition on package require.
New plugin system to allow lots of possibilities.
Handle “dict for” better.
Handle “try” better.
Handle “tcl::mathfunc” better.
Fixed bug where filter pragmas could leak to similar line numbers. [Bug 18486]
Added note for unescaped close braces.
Changed inline comment implicitvar to implicitvarns.
Changes in v1.1.12 (2011-11-27):
Added checks for array/scalar mixup.
More 8.6 support, more of tcloo handled.
Command line -s search built-in database too.
Command line -H added to precede messages with file name.
Recognize namespace idiom ${ns}::var as non-suspicious.
Changes in v1.1.11 (2010-09-30):
Do not turn off variable tracking during code coverage instrumentation. This was needed to be able to cover OO code. Option -novar only suppresses messages now.
More 8.6 support, e.g. tailcall and more support for OO checking. Still not convenient to check OO though.
New syntax tokens for command and object definitions, needed to pave the way for OO.
New inline command “alias” to link from command to command.
Changes in v1.1.10 (2010-05-17):
Include 8.6 database. Much support to make OO checking possible. Not convenient yet though.
More 8.5 commands in database. Including msgcat.
Added HTML output option.
Added support for partial command tokens, for better checking of callbacks.
Added note when encountering newline in command subst.
Added note when encountering expr in an expression.
New inline command “subcmd+” to handle manually added subcommands, e.g. through namespace ensemble.
New inline command “copy” to copy syntax from command to command.
Misc GUI fixes and bug fixes [Bugs 15644, 15645].
Thanks to Hans Goetz for contributions.
Changes in v1.1.9 (2008-09-05):
Default database is 8.5 based.
More 8.5 commands in database, including ttk.
Detect Ctrl-Z in scripts, notifying about it.
Use the selected encoding on instrumented file and markup file.
Support initial “+” in bind scripts. [FR 3893]
New ##nagelfar nocover pragma.
Changes in v1.1.8 (2007-12-05):
Added a reset filter option in GUI. [FR 3586]
Added break button in GUI. [FR 3412]
Removed old {expand} syntax.
Added Del button for Db files. [Bug 11109]
Added percentage in coverage output. [FR 3428]
Improved error messages for comments in db files. [Bug 11109]
Check if file is being reinstrumented. [FR 3424]
Made code coverage count number of runs instead of just run/notrun. [FR 3415]
Fixed a bug in expression checking. [Bug 11091]
Check bind scripts in global context. New token “C”.
Fixed edit window startup problem.
Filter multiple line messages better in GUI. [Bug 10515]
Corrected syntax for time command. [Bug 10496]
Changes in v1.1.7 (2007-02-23):
Added sanity check for proc arguments. [FR 3167]
Read .nagelfarrc from current dir first.
Added -exitcode. [Sup 102383]
Added extensions preference. [FR 3102]
Detect inline style comments in db file. [FR 2541][FR 2938]
Check for extra quote at end of word. [Bug 9644]
Detect extra bracketed commands. [FR 2943]
Check for duplicate files in GUI. [Bug 9709]
More filter options on GUI. [Bug 9774][Bug 9826]
Corrected syntax database for regsub. [Bug 9791]
More fconfigure opts in syntax db. [Bug 9607]
Added more missing 8.5 features to syntax db. [Bug 10430]
Thanks to David Cargo for suggestions.
Changes in v1.1.6 (2006-12-03):
Remember directories between adding files. [Frq 2921]
Allow to move files in file list with shift-up/down. [Frq 2921]
Include 8.5 syntax database in distribution.
Fixed bug remembering global variables. [Bug 9578]
Support {*} syntax.
Fixed bug in switch check. [Bug 9147]
Include Tk’s auto_loaded commands in syntax db.
Changes in v1.1.5 (2006-10-15):
Added proc argument name sanity checks.
Fixed header generation bug. [Bug 8500]
Fixed upvar bug. [Bug 8534]
Fixed namespace resolution bug. [Bug 8538]
Check namespace eval better. [Bug 8539]
Fixed bad close brace alignment warning. [Bug 8537]
Recognize FRINK style inline comments. [FR 2540]
Allow level in inline filter comments.
Changes in v1.1.4 (2006-07-05):
Improved 8.5 support, allowing source -encoding in instrumenting and added more new commands to the syntax database.
Allow nagelfar to be loaded embedded.
Changes in v1.1.3 (2006-06-02):
Instrument a missing “else” in code coverage, to get branch coverage.
On Windows, when run in wish there is no stdout so always start in gui mode.
Made it possible to remove files from database list.
Support vim as editor.
Support different tab settings.
Goto next error, and text search in result window.
Put less important info in gray.
Thanks to Arjen Markus and Andreas Leitgeb for suggestions.
Changes in v1.1.2 (2005-01-31):
Added -header flag to generate a syntax file for one or more tcl files.
Added the option to use emacs to view files instead of the internal editor.
Added -quiet flag to suppress some output.
Added -glob flag.
Thanks to Yiftach Tzori and Phil Wise for contributions.
Changes in v1.1.1 (2005-01-02):
Fixed a bug that prevented instrumenting multiple files.
Preserve header and permissions in instrumented file to allow an executable file to remain executable after instrumentation.
Changes in v1.1 (2004-12-22):
Added support for code coverage instrumentation.
Added -strictappend option to enforce setting a var before (l)appending to it.
Bug fixes in variable and upvar handling.
Added option to backup file when saving from Edit Window.
Thanks to Uwe Koloska for suggestions and fixes.
Changes in v1.0.2 (2004-09-02):
Added database browser for easier access to examples.
Fixed some bugs in resolving namespace proc names.
Always use 2-pass analysis.
Track interp alias “commands”.
Changes in v1.0.1 (2004-06-13):
Fixed some bugs in {expand} handling. It is still rather incomplete, examples of live code that needs better handling are welcome. Note that to check {expand} Nagelfar must be run in an 8.5 interpreter, and the syntax database must be generated from 8.5 (the distributed syntax database is currently from 8.4.6).
Changes in v1.0 (2004-05-01):
Add multiple files in file add dialog.
Improved option and subcommand checking. Added more info about them to the syntax database.
Added more ways to use inline comments to help Nagelfar, including an ignore comment to skip messages for known issues.
Changes in v1.0b3 (2004-03-23):
Fixed a bug in option checking where glob chars disturbed things.
Also make sure that option checking is not invoked on args that cannot be options due to their placement.
Changes in v1.0b2 (2004-02-09):
Added -encoding option for scripts that are not in system encoding.
Added registry setting for Windows.
A few minor bugs fixed.
Changes in v1.0b1 (2004-01-29):
Recognize if 0 {…} as a comment.
Added a check for bad comments in constant lists.
Added a 2-pass proc checking to improve things when procs are used before they are defined in a file.
Optimized, improved speed by about 35%.
Changes in v0.9 (2003-12-11):
Improved expression checking.
Added upvar detection to handle call-by-name better.
Added a check in the edit window to simplify checking of clips that are not in files.
Changes in v0.8 (2003-08-14):
Bug fixes in options checking and proc checking.
GUI polishing.
Changes in v0.7 (2003-07-23):
Tclkit support. Removed FreeWrap support.
Requires Tcl/Tk 8.4.
More knowledge about options in syntax databases.
Some GUI polish including a progress bar and context menu.
Fixed a bug where the script’s own procs were not checked properly.
Added a severity level to each message (Note/Warning/Error) and a severity level filter on output.
Changes in v0.6 (2003-07-08):
The application got its name.
Added -filter option to suppress messages.
Changes in v0.5 (2003-02-14):
Made it work when wrapped with FreeWrap. This includes wrapping the syntax database and supporting TkDnd if properly placed.
Changes in v0.4 (2002-11-14):
Added option to skip variable check.
Added option to enforce ‘else’ keyword.
Some message improvements and minor bug fixes.
Changes in v0.3 (2002-09-02):
Made procedure checking namespace-aware.
Some improvements in syntax database and check engine.
Changes in v0.2 (2002-08-28):
Added a GUI, which can be used if you run with wish or in Tcl8.4. It is still a command line tool but invokes the GUI if no arguments are given or the option -gui is used.
Changed how syntax databases are located, which simplifies usage a bit.
Sorts output on line numbers to make it easier to follow.
Improved some error messages.