skip to navigation
skip to content

Not Logged In

catkin_lint 1.3.4

Check catkin packages for common errors

Latest Version: 1.4.2

Overview

catkin_lint checks package configurations for the catkin build system of ROS. It is part of an ongoing effort to aid developers with their ROS packaging (see also: issue #153).

Installation

catkin_lint is available as PyPI package and Ubuntu PPA package. It can also be downloaded from GitHub and installed manually with python setup.py install.

Build status of latest version:

Running

catkin_lint runs a static analysis of the package.xml and CMakeLists.txt files. It can detect and report a number of common problems.

If catkin_lint is invoked with one or more paths as parameters, it searches for packages recursively and checks all of them. Alternatively, the --pkg option can be used to add the path of a particular ROS package.

If neither paths nor packages are specified, catkin_lint looks for a package in the current working directory.

A more detailed list of command line options can be obtained by running catkin_lint --help.

Limitations

catkin_lint emulates a limited subset of CMake. It does not evaluate boolean expressions in if() clauses, emulates find_package() calls with mock values, and ignores function() definitions.

Catkin Build Integration

It is recommended to run catkin_lint at workspace configuration time. The simplest way is to symlink /opt/ros/$ROS_DISTRO/share/catkin/cmake/toplevel.cmake to your $WSDIR/src folder manually (do not use catkin_init_workspace). Then add the following CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.3)
execute_process(COMMAND catkin_lint "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE lint_result)
if(NOT ${lint_result} EQUAL 0)
    message(FATAL_ERROR "catkin_lint failed")
endif()
include(toplevel.cmake)

Diagnostic Levels

catkin_lint has messages in three different categories: errors, warnings, and notices. The -W option controls which problems are reported to the user:

  • -W0: only errors are reported (this is the default)
  • -W1: errors and warnings are reported
  • -W2: errors, warnings, and notices are reported

Normally, catkin_lint returns a non-zero exit code if and only if errors occurred. The --strict option causes catkin_lint to treat any reported problem as error.

Errors

Errors are severe enough to break the build and/or produce unintended side effects. Usually, they violate the rules outlined in the catkin manual

Warnings

Potential errors which may indicate a bug in your package but may be justified for reasons catkin_lint cannot discern. Constructs which trigger a warning can usually be modified in a way that is functionally equivalent but more robust.

Notices

Issues which are not objectionable from a technical view point but should be addressed to improve the quality of the package. Many notices highlight violations of the recommendations and best practises from the catkin manual.

Contribution

catkin_lint is still under active development and lacks a number of features:

  • Support for upcoming package.xml format 2
  • Unit tests with full coverage
  • Check proper usage of external libraries (e.g. Qt)
  • Support for CMake functions

If you would like to contribute, you are very welcome to do so. Please contact @roehling first to avoid any duplication of work.

 
File Type Py Version Uploaded on Size
catkin_lint-1.3.4.tar.gz (md5, pgp) Source 2014-03-19 36KB
  • Downloads (All Versions):
  • 84 downloads in the last day
  • 411 downloads in the last week
  • 3143 downloads in the last month