All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Fixed a bug that caused an index out of bounds error when parsing Python code.
- Updated minimum required version for
bonsai
.
- Added basic extraction capabilities for ROS parameters in Python source code.
- Fixed a bug that skipped Python node parsing.
- Fixed a crash when reading non-ASCII source files.
- Fixed a crash when parsing certain types of HPL properties.
- Fixed a Python 2/3 compatibility bug.
- Fixed issue #70 and issue #111.
- Fixed a Python 2/3 compatibility bug.
- Fixed bug that prevented parsing caches from being invalidated.
- Fixed a crash when running
haros
without arguments.
- Fixed a crash when plugins reported ignored rules.
- Fixed an issue when analysing Python bytecode files not encoded in UTF-8 (bytecode should not be treated as text files).
- Fixed a Python packaging issue.
- Fixed a bug when parsing XML tags without text in package.xml files, e.g.,
<author email="name@example.com" />
.
- Fixed a bug when parsing launch files that complained about unicode strings.
- Internal code changes to support Python 3 environments.
- Added the
news
command, to print out some news updates.
- Fixed a bug with namespace resolution when extracting topic/service/param function calls.
- Added convenience methods to some metamodel classes.
analysis
section to project files, same as in~/.haros/configs.yaml
.
- Viz now shows which conditional statement is associated with each conditional expression (e.g.,
if
,for
, etc.). - Node HPL properties were not being properly read from project files.
- Docker files moved over to the
make-haros-easy
repository. New and improved files have been added in that repository, thanks to @ipa-nhg. - HPL parsing is now delegated to the external
hpl-specs
package.
- added missing
--ws
argument to thefull
command.
- viz/export bug where multiple queries with the same rule id were aggregated; each query report is now highlighted individually.
- bug when declaring
configurations
as lists of launch files that caused a crash.
--ws
option toanalyse
.
- Reworked the HAROS dashboard to replace unimplemented statistics with more relevant ones.
- Added a summary panel to the Configuration model viewer in Viz.
- Fixed a bug that caused the
init
andviz
commands to crash. - Fixed a bug that caused the CMake parser to crash when trying to read directories that do not exist.
--junit-xml-output
option tofull
,analyse
,export
andparse
commands to output JUnit XML reports.- Support to detect ROS2 workspaces.
- Ability to exclude directories from the analysis by including a
COLCON_IGNORE
,AMENT_IGNORE
orCATKIN_IGNORE
file within. - Pure Python packages in ROS2 that do not have a
CMakeLists.txt
use Python files that contain adef main()
function to identify nodes. --minimal-output
option tofull
,analyse
andexport
commands, to export just the bare minimum files to view the HTML report.- Experimental support to parse Python nodes.
- Setting in the
~/.haros/configs.yaml
file to skip the analysis for certain files based on glob patterns.
- Command
parse
, a convenience command to run model extraction without running plugin analysis. - A database of pre-parsed ROS nodes from select distribution packages.
- A new issue reporting function for plugins, focusing on runtime (
Configuration
-related) issues.
- Fixed and improved the way extraction hints are handled when merging possible candidates.
- Exported JSON files now have proper indentation.
- Top-level
--config
option to pass a path to a custom configuration YAML file.
- Fixed a bug that required arguments for the
analyse -w PLUGIN
andanalyse -b PLUGIN
commands to start with theharos_plugin_
prefix. - Improved error messages to distinguish between no plugins being found (at all) and finding no plugins that match user-provided names.
- Fixed a bug that caused a crash when
analyse
was called on a new HAROS home directory, without callinginit
before, and using the default YAML project file.
- Fixed a bug that caused the wrong default project file to be loaded when using the
--home
option.
- A new section in project files,
nodes
, where users can provide extraction hints for nodes outside of the scope of a particular configuration. This avoids duplication of hints across similar configurations.
- Fixed a minor bug during error handling that would cause the wrong error to be reported.
- Fixed a bug where user-defined queries were being ignored.
- Fixed an issue where packages had to be included for analysis (with source available) for nodes belonging to such packages, appearing in a launch file, to appear in extracted models.
- Added the
--home
option to the baseharos
command. This option receives a directory as argument, to use in place of the default$HOME/.haros
data directory. It is useful, for instance, to have multiple settings profiles.
- All commands (
haros analyse
,haros export
, etc.) perform the necessary setup operations formerly performed withharos init
. haros init
is no longer required before the first run of HAROS, and it is now used just to reset the~/.haros
directory (or any other given with--home
) to a fresh state.
- Improved extraction accuracy for a specific case in C++ where primitives are called within a constructor and the
NodeHandle
is a default-initialized class member.
- The model extraction process should now be able to resolve
typedef
s.
- Support to extract
image_transport::SubscriberFilter
calls. - Support to extract
message_filters::Subscriber
calls. - Support to extract
image_transport::Subscriber
calls. - Support to extract
image_transport::Publisher
calls.
- Dependency on
rosgraph
is now optional. - Fixed a bug that prevented unresolved namespaces to match with valid extraction hints (e.g.
/?/topic
would not match with atopic
hint).
- Plugins are no longer cloned and installed by HAROS. Instead they are distributed and installed as a
pip
requirement. - The plugin discovery mechanism had to change, in order to comply with the point above. Plugins are now discovered by naming convention (package names starting with
haros_plugin_
).
- Fixed bug in CMake parser where
include_directories
expected at least one argument.
- Fixed the auto-generated
~/.haros/configs.yaml
to include the new sections to ignore rules and tags.
~/.haros/configs.yaml
file can be used to ignore specific rules or tags.- C++ files can be annotated with
// haros:ignore-line
and// haros:ignore-next-line
to exclude specific lines from analysis. - Python files can be annotated with
# haros:ignore-line
and# haros:ignore-next-line
to exclude specific lines from analysis.
requirements.txt
file.
- Replaced
yaml.load
withyaml.safe_load
. - Added a monkey patch for
pyflwor
, so that it now works from apip install
.
- Made the dependency on
pyflwor
optional (#38). - Updated README to reflect this (#40).
- HAROS can now detect workspaces built with
catkin_make_isolated
andcatkin build
.
- Fixed some bugs when parsing CMake files.
- Fixed a bug crashing first-time runs.
- Fixed a bug preventing the
full
command from working.
- Parsers for CMake and Launch files.
- Extractor for nodes within packages (which files compile a node).
- Configuration builder: define your ROS applications (Configurations) to be automatically extracted (C++ only with
clang
parser). - Query engine to operate on extracted models.
- Graph visualiser for extracted models (in HAROSviz).
- Plugin entry point to analyse extracted Configurations.
- User settings file in default
.haros
directory.
- HAROS uses a new metamodel to represent its data.
- The source code indexing and analysis process was changed, although most (if not all) of these changes should not be noticeable by end users.
- Command line options for
analyse
andfull
have changed. - Changed project files (package index files), so that they now allow the definition of custom Configurations and custom queries.
- Exported JSON formats have changed as a result of the new metamodel.
- Fixed an issue where
full
andviz
commands were crashing if the-d
option was not present.
--headless
option forviz
does not require any user input.
--headless
option forviz
andfull
to allow the server to run without opening a web browser.
- A reserved project name
all
. When runningexport -p all
all available projects will be exported. - Dependency on PyLint.
-C
base option has been renamed to-c
or--cwd
.--repositories
long option foranalyse
andfull
has been renamed to--use-repos
.-t
/--target-dir
option foranalyse
andfull
has been renamed to-d
/--data-dir
.- When
-d
is given, HAROS will try to load an existing analysis database from that directory. If there is one, new analysis reports will be added and stored on that database. analyse -d DIR
andexport -v DIR
will no longer delete the contents ofDIR
.- Changed the directory structure for exported results. For
analyse -d DIR
andexport -v DIR
, viz files go intoDIR
, with an additionalprojects
directory for databases. Forexport DIR
all results go directly intoDIR/PROJECT
. - The main
haros
module has been rewritten to be more modular and maintainable. It is completely backwards incompatible.
-a
option that allowed a specific analysis database to be imported. See-d
for more.
- Concept of project, more or less equivalent to an index file.
-a
option foranalyse
andfull
commands, to import an existing analysis database.
-d
option from viz is now-t
for consistency withanalyse
andfull
commands.- Directory structure for viz and Haros data.
- Viz dashboard now allows selection of displayed project.
- Change log.
-t
option foranalyse
andfull
commands, to specify a target export dir.-v
option forexport
command, to also install viz files.-d
option forviz
command, to allow the server to serve a custom dir.
- Plugins now use a random tmp dir for their operation. This allows multiple instances of haros at the same time.