针对代码包运行静态分析工具的工具。
statick的Python项目详细描述
静力学
<表><广告>statick是一套分析软件包的工具。
本自述仅介绍statick的基本用法。 有关更多详细信息,请参阅《Statick用户指南》。 用户指南对于创建和使用自己的测试级别和异常的提示尤其重要。
statick使用一个插件系统从一个默认的资源位置和 用户可定义运行软件的位置。
statick扫描的插件分为三类:
- 在代码包中查找要扫描的文件的发现插件。
- 工具插件对发现插件发现的文件运行分析程序。
- 报告插件以各种格式输出分析结果。
安装所需工具
以下命令适用于ubuntu 16.04。 其他系统的确切软件包名称可能会有所不同。
这些包用于statick的默认配置所使用的工具。 根据您的使用和配置,您可能不需要这些软件包。
$ cat install.txt | xargs sudo apt-get install
$ pip install -r requirements.txt
要运行ros包,还有几个系统包需要获得。 此命令假定您已经为您的系统设置了ros apt存储库。
$ cat ros-deps.txt | xargs sudo apt-get install
设置cppcheck
CPPECK是C++的静态分析工具。
可以设置工具的所需版本,以确保输出的一致性。
所需版本的工具可以作为config.yaml
文件中工具标志的一部分传入。
如果没有为版本设置标志,则将运行该工具的任何已安装版本。
如果设置了所需版本但未找到,则工具将不会运行。
下面是如何安装特定版本的cppcheck的示例。
在你身上的某个地方r文件系统(例如~/src
)
$ git clone --branch 1.81 https://github.com/danmar/cppcheck.git
$ cd cppcheck
$ make SRCDIR=build CFGDIR=/usr/share/cppcheck/ HAVE_RULES=yes
$ sudo make install SRCDIR=build CFGDIR=/usr/share/cppcheck/ HAVE_RULES=yes
静态安装(可选)
在系统上安装statick并使其成为$path
:
$ sudo python setup.py install
运行
如果是从已安装的版本运行,则将使用statick
或statick-ws
命令。
如果您是从工作区中的本地版本运行作业,则可以像~/src/my-ws/src/ssc/statick/statick
或~/src/my-ws/src/ssc/statick/statick-ws
有关所有可用参数的说明,请将--help
选项传递给任一程序。
对于单个包裹
$ statick <path of package> <output path>
"包的路径"是要扫描的包的路径。
"输出路径"是存储生成和输出文件的路径。 这最初应该是一个空目录,独立于常规的源和生成目录。 运行程序之前,此目录必须已存在。
如果您将其与ros ament/catkin工作区一起使用,则在运行该工具之前,必须获得工作区setup.bash
的源代码。
对于整个或部分ament/catkin工作区
$ statick_ws <path of src tree> <output path>
"src tree的路径"是ament/catkin工作区根目录下的src目录或该目录下的任何目录。
"输出路径"是存储生成和输出文件的路径。 这最初应该是一个空目录,独立于常规的源和生成目录。 运行程序之前,此目录必须已存在。
示例用法
以下是我们目前正在实施的法规遵从性级别的一些用例示例。
对于单个包
$ cd ~/src/my_ws
$ . devel/setup.bash
$ mkdir statick_output
$ statick src/my_org/my_pkg statick_output
对于工作空间的一部分
$ cd ~/src/my_ws
$ . devel/setup.bash
$ mkdir statick_output
$ statick_ws src/my_org statick_output
对于整个工作区
$ cd ~/src/my_ws
$ . devel/setup.bash
$ mkdir statick_output
$ statick_ws src statick_output
静力学手套
statick gauntlet在一个干净的工作区中针对一组单独的目标运行make
,该工作区允许它捕获可能出现在catkin\make
上的依赖性问题。
这些问题通常表现为生成失败,这些失败会突然出现,并通过再次运行生成来神奇地解决它们。
运行
如果从已安装的版本运行,则将使用statick_gauntlet
命令。
如果您是从工作区中的本地版本运行作业,则可以像~/src/my-ws/src/ssc/statick/statick-gauntlet
有关所有可用参数的说明,请将--help
选项传递给程序。
$ cat install.txt | xargs sudo apt-get install
$ pip install -r requirements.txt
0
"catkin src的路径"是catkin工作区根目录下的src dir。
在那里应该有默认的cmakelists.txt来运行catkin_init_workspace
或catkin_make
"输出路径"是存储生成和输出文件的路径。 这最初应该是一个空目录,独立于常规的源和生成目录。 运行程序之前,此目录必须已存在。
在运行此工具之前,您不得获取工作区的源代码。 如果有一个工作区,它将无法正常工作。
此命令不能针对单个包运行,必须针对整个工作区运行。
但是,您可以使用下面列出的--targets_文件
选项来选择要测试的目标。
默认情况下,它会测试所有目标。
在运行失败的目标后,您可以传递--failed only
选项,以便仅运行那些再次失败的目标。
您可以传递--targets file<;file>;
选项,将给定文件用作要运行的目标列表。
文件内容应该类似于
$ cat install.txt | xargs sudo apt-get install
$ pip install -r requirements.txt
1
您可以通过--force cmake
选项来强制防护工具重新运行cmake。
这可以解决您遇到的任何奇怪问题。
示例用法
下面是一些运行挑战的用例示例。
请注意,您没有获得setup.bash
整个工作计划CE/H3>
是啊。
针对失败的包运行
如果你有失败,你可以重新运行挑战,只有那些失败
啊!13!