针对代码包运行静态分析工具的工具。

statick的Python项目详细描述


静力学

<表><广告>服务 状态< /广告><正文>构建travis ciPYPIpypi versioncodecovcodecov

python versionslicense每日下载每周下载每月下载

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

运行

如果是从已安装的版本运行,则将使用statickstatick-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_workspacecatkin_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!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java“抹去”了整个swing GUI,只有一个组件例外   有人能解释一下为什么这个用来反转字符串的Java程序不起作用吗?   jar使用java代码发送电子邮件   java如何使用keyRelease连续激发筛选表?   安卓 studio在java中执行lua脚本   java在实现StatefulJob时,“延迟”是什么意思?   当我再次尝试上传时,java Android无法查看保存在新目录中的图像   爪哇岩布剪刀问题只返回一半结果   使用Jersey Rest客户端进行java异步大文件上载   Java日历。加错年份   java对于多个autosize文本视图只有一个大小   java JodaTime:句点、间隔和持续时间之间有什么区别?   java对返回数据的正确处理   多线程多线程在java中打印偶数和奇数?   摆动Java弹跳球移动   httpconnection Java HttpUrlConnection抛出连接被拒绝   寻找C#的XmlConvert的Java等价物。编码名称   jetty在一个cookie Java代码中设置多个值   使用maven构建java jar显示错误   java我可以只使用输入在iText中生成超级脚本吗?