All notable changes to this project will be documented in this file.
Tag BREAKING means the change break compatibility with a previous version of the program.
- The configuration setting
ignoreDir
for remove all files from the selected directory from the list of files to check. - The configuration setting
extensions
for add additional files' extensions when adding files withdirectory
configuration setting.
- Updated the project's documentation.
- Don't check for named parameters in sizeof procedure by
namedParams
rule. - BREAKING: The
directory
configuration setting now adds to check by default only files with .nim or .nims extensions. It may break configuration if files to check have their extensions different.
- The rule
objects
should check only types definition. - The rule
objects
doesn't detect constructors when an object definition contains pragmas. - The rule
assignments
should check only valid shorthand assignments or full assignments which can be updated. - The rule
hasPragma
now properly detect pragmas only in forward declaration of routines.
- Compilation with Nim 2.2.0
- New rule
ranges
to check ranges declarations in a code do they have spaces before and after the sign..
.
- Updated the project's documentation.
- Updated README.md.
- Building the project's documentation.
- Cross-compiling the Windows version of the program on Linux.
- Checking
ref
objects' types with the ruleobjects
. - Typos in the project's configuration's file's documentation.
- The rule
objects
can now check for existence of constructors of objects. It follows Nim coding standard, the constructors must have names likenewObjectName
orinitObjectName
to be detected. - The rule
namingconv
can now check naming conventions for declared types. - The rule
params
can now check do routines useint
orstring
for their parameters declarations. - BREAKING: added option fields to
objects
rule to check only fields of objects. The old option all now also checks for existence of contructors of objects.
- Updated the project's documentation.
- BREAKING: changed the name of the rule
paramsUsed
toparams
. The reason after this change is to made the rule more generic, allowing it to check more things related to routines' parameters.
- BREAKING: Option checkType from
complexity
rule. It wasn't need as the the rule checks only cyclomatic complexity. If in the future there will be added more types of complexities to check, the option can be reintroduced.
- The rule
hasDoc
doesn't detect documentation in functions. - Crash when trying to
fix
code documentation withhasDoc
rule. - Adding code documentation with
hasDoc
rule. - Checking moveable branches with
ifstatements
rule.
- The configuration option to enable the program's summary at the end of its work. Currently, it shows only how much time elapsed and the highest memory usage.
- New rule
tryStatements
to checktry
statements'except
branches in a code do they are empty or contain an exception with the selected name. - More information about the program's error to error messages
- New rule
object
. It can check if the object's type's declarations have all their fields public or private and do they are declared by usingint
orstring
types. - More types of the program's rules' options:
natural
for integer values of 0 or more andpositive
for integer values greater than 0. - The rule
varDeclared
can now detect do a variable was declared withint
orstring
type.
- Using unittest2 package for the project's unit tests.
- BREAKING: adding or removing rules from the program doesn't need to update file rulesList.txt. Now it is just adding or removing the Nim file with the rule's code to rules directory.
- Better detection of
if
stataments by theifStatements
rule. - Better detection of
for
stataments by theforStatements
rule. - Updated README.md.
- BREAKING: added the option to set if the log file should be cleared
before the logging starts. It can breaks the old configuration file, because
the syntax of the setting
output
was changed. - Better detection of assignments by the
assignments
rule.
- The rule
ifstatements
checkswhen
statements for upgrade tocase
statements. - Showing the explanation for negative checks of the
forStatements
rule. - The result for negative
count
type check forassignments
andvaruplevel
rules. - The result for
count
type check forcasestatements
,ifstatements
andlocalhides
rules. - Showing the detailed information about found result for
count
type of the program's rules. - The summary information for negative
count
type check forhasdoc
,hasentity
,haspragma
andlocalhides
rules. - The summary information for checks for
paramsused
andvardeclared
rules. - The result for
search
type check forcasestatements
,ifstatements
,forstatements
,localhides
andvaruplevel
rules. - The summary information for negative
search
type check forhasdoc
andlocalhides
rules.
- Detecting a documentation of types by
hasDoc
rule if the type has defined a pragma(s).
- The option to check only unborrowed procedures, functions and methods for
pragmas with
hasPragma
rule. - The configuration setting
ignore
for remove the selected file from the list of files to check. - The rule's name to the program's rules' messages.
- Updated the project's documentation.
- BREAKING: name of module required to import for use the program's pragmas in the checked code.
- Updated contributing guide.
- Don't install file rulesList.txt. It is needed only for compilation of the program.
- Checking usage of parameters of procedures by
paramsUsed
rule. - Detecting a documentation of definition of procedures, functions, etc. with
hasDoc
rule. - Crash when checking for named parameters in call by
namedParams
rule when there is more results than allowed. - Crash when there is more results than set by the user in a configuration file.
- Detecting a documentation of types with
hasDoc
rule. - Installing the program should also contains file nimalyzer.nim for ability to disable and enable rules.
- Detecting a documentation of variables in
let
section withhasDoc
rule. - Detecting calls by
namedParams
rule. - Detecting empty
if
statements withifStatements
rule. - Detecting empty
for
statements withforStatements
rule. - Don't check the last parameter of a call if it is a statements' list with
namedParams
rule. - Crash when checking declarations of variables with
varDeclared
rule. - Crash when checking variables with
localHides
rule. - Checking declarations of multiple variables with
varDeclared
rule.
fix
type of rule toparamsUsed
rule. It now can remove unused parameters from procedures' declaration.- BREAKING: rules
forStatements
andifStatements
need now option to set what kind of checks will be performed. - Ability to check for empty
for
statements toforStatements
rule. - Coloring output of the program in console.
- Configuration setting
maxreports
to limit the amount of reported problems by the program. - Ability to check the maximum and minimum amount of branches of
if
statements toifStatements
rule. - BREAKING: checking for invalid the program's configuration's settings in a configuration files.
- Information about the line number to errors' messages during parsing the program's configuration files.
- Configuration setting
explanation
which allow adding message to the program's rules which shown when the checked code violates the rule's setting. - New rule
caseStatements
to checkcase
statements in a code for minimum and maximum amount of their branches. - New rule
comments
to check the comments in a code with the selected regular expression or do a code contains a legal header. - New rule
assignments
to check the assignments in a code do they are shorthand assignments or not. - New rule
complexity
to check code blocks in a code for their cyclomatic complexity.
- Made the program's configuration files syntax case-insensitive.
- Updated README.md.
- Typos in the program's documentation.
- Checking usage of parameters in declarations by
paramsUsed
rule. - Typos in the program's messages.
- Configuration setting
reset
which allows reset the program's configuration in the configuration file to change the program's settings without stopping it. - Configuration setting
message
to add a custom messages to the program's output, console and the log file. - Configuration setting
forcefixcommand
which allows force subsequent program's rules to use their auto fix code or the command defined with thefixcommand
setting. - BREAKING: rule
hasDoc
needs now option to set what kind of entities should be checked. fix
type of rule tohasDoc
rule. It can now delete documentation or add a template of documentation to the checked code.- New rule
ifStatements
to checkif
statements in code for various things, like empty statements, negative conditions, etc. - New rule
forStatements
to checkfor
statements in code do they usepairs
anditems
iterators or not.
- Updated the project's documentation.
- Made rules' custom options case-insensitive.
- Better formatting of error message for rules.
- Typos in Changelog.
- Typos in the program's configuration's documentation.
- Detecting documentation of objects types declaration by
hasDoc
rule.
- Checking global variables declarations do they have documentation with
hasDoc
rule. - New type of rules:
fix
. For most rules, it just executes a configured command when a rule finds a problem, but some rules can automatically fix the reported problem. Please refer to the program's documentation how the type of rules works. - The option to enable checking public fields of types declarations for
documentation for
hasDoc
rule. - Ability to check usage of parameters in macros only for
paramsUsed
rule.
- Better checking for named parameters by
namedParams
rule. - Don't check for named parameters in defined procedure by
namedParams
rule. - Don't check for type or value for declarations which unpack tuples by
varDeclared
rule. - Updated the project's documentation.
- BREAKING: rule
hasDoc
doesn't check public fields of objects types for documentation. - Updated contributing guide.
- Typos in Changelog.
hasDoc
rule doesn't detect if procedure doesn't have documentation if one of its child has it.- Message level for
hasEntity
rule when it doesn't find the selected entity with check type of the rule. - Message text for
hasEntity
rule when the program's verbosity is set to higher level than default. - Negation doesn't work for
paramsUsed
rule. - Detection of variables which can be updated to let or const with
varUplevel
rule. - Result of negative check for
varUplevel
rule.
- New rule
varUplevel
to check if declaration of variables can be updated to let or const. - New rule
localHides
to check if local variables declarations hide global ones. - New rule
namingConv
to check if variables, procedures and enumerations fields follow the selected naming convention.
- Updated the project's documentation.
- Updated README.md.
- Disabling and enabling rules' pragmas can be now placed before or in the code fragment for which rules should be disabled or enabled.
- Better checking for parameters usage by
paramsUsed
rule.
- Typos in Changelog.
hasPragma
rule doesn't return error if a declaration doesn't have any pragmas.hasEntity
rule doesn't check properly for entities, regression.hasDoc
rule doesn't check properly if module has documentation.hadDoc
rule doesn't detect if template has documentation.- Detection of names of parameters of procedures in
paramsUsed
rule, when parameter has pragma. - Detection of values of variables' declarations in
varDeclared
rule.
- Ability to set parent entity and index of child for rule
hasEntity
. - Ability to disable and re-enable the program's rules with pragmas
ruleOn
andruleOff
. - Better reporting of the program's errors, especially when the program is built in debug mode.
- New rule
varDeclared
to check if variables declared in a module have declared types or values. - BREAKING: Ability to set the type of declaration which will be checked
for pragmas for rule
hasPragma
. - BREAKING: Ability to set the type of declaration which will be checked
for the parameters' usage for rule
paramsUsed
.
- Updated the project's documentation.
- Updated contributing guide.
- Result for negative check for
hasDoc
,hasEntity
,namedParams
andparamsUsed
rules. - Result for negative search for
hasEntiry
rule. - Show the name of the entity when search for entity with any name in
hasEntity
rule. - Detecting documentation of templates with
hasDoc
rule. - Return value for check type of rules when nothing was found in a code.
- Initial release.