在ubuntu上安装splint

2023-11-02

lint

lint是最著名的C语言工具之一,是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析,一般由UNIX系统提供。

工具介绍

与大多数C语言编译器相比,lint可以对程序进行更加广泛的错误分析,是一种更加严密的编译工具。最初,lint这个工具用来扫描C源文件并对源程序中不可移植的代码提出警告。但是现在大多数lint实用程序已经变得更加严密,它不但可以检查出可移植性问题,而且可以检查出那些虽然可移植并且完全合乎语法但却很可能是错误的特性。

随着历史的推移,Lint后来形成了一系列的工具,包括PC-Lint/FlexeLint(Gimpel),LintPlus(Cleanscape)以及Splint

基本功能

lint检查C程序中潜在的错误,包括(但不限于)可疑的类型组合、未使用的变量、不可达的代码以及不可移植的代码。lint会产生一系列程序员有必要从头到尾仔细阅读的诊断信息。使用lint的好处是:1.它可以检查出被编译器漏掉的错误; 2.可以关联很多文件进行错误的检查和代码分析,具有较强大灵活性.lint可以检查的错误类型大体如下:
	可能的空指针
	在释放内存后使用了指向该内存的指针
	赋值次序问题
	拼写错误
	被0除
	失败的case语句(遗漏了break语句)
	不可移植的代码(依赖了特定的机器实现)
	宏参数没有使用圆括号
	符号的丢失
	异常的表达式
	变量没有初始化
	可疑的判断语句(例如,if(x=0))
	printf/scanf的格式检查
	

系统版本

UNIX系统 在UNIX系统中,可自动获得lint,它是一个标准的UNIX工具。
Linux系统 在Linux各种发行版中,使用lint的版本是GNU下的Splint(前身是LClint)
Windows 在Windows系统中,从第三方获得的lint工具的名称是PC lint以及Splint

在 ubuntu上安装splint

  • 下载splint网址:
http://www.splint.org/downloads/splint-3.1.2.src.tgz

注意:有些地方要使用sudo超级用户


创建目录
mkdir /root/splint/
cd /root/splint/
解压文件
tar -zxvf splint-3.1.2.src.tgz 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v5gqv6qr-1685417575337)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529162548815.png)]

解压后生成splint-3.1.2目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EduLIPFx-1685417575338)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529162745996.png)]

进入splint-3.1.2目录

cd splint-3.1.2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tEpCjLyq-1685417575339)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529162855140.png)]

指定配置文件的路径

./configure --prefix=/root/splint/splint-3.1.2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oYInfOUW-1685417575339)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529162919518.png)]

编译 执行make

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o9U1RT5C-1685417575340)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529163046043.png)]

(如果中途有出现yy什么未声明之类的,则sudo apt-get install flex(ubuntu)或 yum install flex(centos),因为要用到flex静态库 )

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kwaLRzh-1685417575340)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529163414416.png)]

执行yum install flex

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A15Ah8op-1685417575341)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529164246737.png)]

如果安装flex后还是提示报错

进入src目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nY5BWQ37-1685417575341)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529164341286.png)]

编辑cscanner.c文件

使用vim 编译器

vim cscanner.c

进入最后一行 :%

添加函数实现

int yywrap()
{
        return 1;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y5kXIpwE-1685417575341)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529170810656.png)]

再次执行make编译

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hMJIgsQk-1685417575342)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529170909666.png)]

安装

make install

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QU60dP7w-1685417575342)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529171232645.png)]

修改配置

#vi ~/.bashrc
新增
export LARCH_PATH=/root/splint/splint-3.1.2/lib
export LCLIMPORTDIR=/root/splint/splint-3.1.2/share/splint/imports

(注意  其中=前后不需要空格,如果出现空格会提示-bash: export: `=': 不是有效的标识符
-bash: export: `/root/splint/splint-3.1.2/lib': 不是有效的标识符
-bash: export: `=': 不是有效的标识符
-bash: export: `/root/splint/splint-3.1.2/share/splint/imports': 不是有效的标识符
)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uETSs2RM-1685417575342)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529173036942.png)]

更新当前文件

#source ~/.bashrc

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4XUJ3h67-1685417575343)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529173048724.png)]

配置环境变量

# export PATH=/root/splint/splint-3.1.2/bin:$PATH  

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CjcIIQlr-1685417575343)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230529174337006.png)]

splint已搭建好 可以编写文件进行测试

参考百度百科lint的中文资料

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在ubuntu上安装splint 的相关文章

随机推荐

  • 【论文阅读】LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain

    LeGO LOAM Lightweight and Ground Optimized Lidar Odometry and Mapping on Variable Terrain 文章摘要 I 简介 II 硬件系统 III 轻量级激光雷达里
  • Flex Builder教程

    Flex Builder教程 编辑页面 最后编辑时间 March 20 2007 网经 最近更新 标题索引 用户设置 随机页 沙盒 帮助 网经 Flex Builder教程 一 概述 二 使用MXML组件构建用户界面 三 数据绑定 四 界面
  • 通达oa共公文件柜服务器目录,通达OA 公共文件柜二次开发添加管理信息(图文)...

    php应用jquery做ajax操作 以下是全部代码 jQuery Ajax 实例演示 lbrack 知识库分享系列 rsqb 二 period NET ASP period NET 最近时间又有了新的想法 当我用新的眼光在整理一些很老的知
  • elementUI输入框组件 样式自定义 高度、圆角、边距调整 图标跟随

    elementUI里的组件都预定义了样式 有时我们用class命名并在css中更改样式时 发现不起作用 或者起不到预期的效果 下面以输入框el input作个例子记录 elementUI输入框为
  • 编译 openwrt 最新实战详细教程

    网上找了很多相关的教程 有些教程太旧了 很多地方都有坑 本人根据一些相关的教程 做了一次实战对比 弥补相关的坑 从源代码构建固件 本节介绍如何从源代码为MTK 7688开发板构建固件 环境 在Ubuntu LTS 14 04 3环境下执行以
  • fd手机抓包

    fd手机抓包问题 大神指点下 欢迎使用Markdown编辑器 你好 这是你第一次使用 Markdown编辑器 所展示的欢迎页 如果你想学习如何使用Markdown编辑器 可以仔细阅读这篇文章 了解一下Markdown的基本语法知识 新的改变
  • TOMCAT-无法成功启动——双击startup.bat闪退的解决办法

    Tomcat无法成功启动 双击startup bat闪退的解决办法 转载 原文链接 https blog csdn net scau lth article details 83218335 这是新手经常会犯的错误 只要注意三个点就可以解决
  • 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。

    开发一个坐标计算工具 A表示向左移动 D表示向右移动 W表示向上移动 S表示向下移动 从 0 0 点开始移动 从输入字符串里面读取一些坐标 并将最终输入结果输出到输出文件里面 输入 合法坐标为A 或者D或者W或者S 数字 两位以内 坐标之间
  • Qt使用帮助文档Assistant

    我们在学习Qt的时候 遇到不懂的地方 可以求助互联网 看教程书籍 也可以直接看Qt的帮助文档Assistant Qt自带的帮助文档是Assistant软件 这可以从Qt的安装路径中找到 我的电脑里Qt的安装路径是E Qt Qt5 14 2
  • Endnote20 在word里插入参考文献 [快捷键Alt+2]

    https www yuque com duzh929 blog kq5u0u原文地址 墙裂建议看看新方法 更简单的新方法 有效解决Endnote20插入参考文献 Endnote20已经上线了 楼主迫不及待的用上了 发现EndnoteX9里
  • MYSQL注入 基础篇1.0

    就算命运不公 重重阻碍 但我在哪里跌倒就一定会在哪里爬起来 只要坚持不懈 那些嘲笑我的人迟早会被我笑死 SQL注入了解 SQL注入是什么 正常的Web端口访问 SQL注入是如何访问 为什么要深入了解SQL注入 SQL注入漏洞的根本原因 SQ
  • 【华为OD机试真题 python】密室逃生游戏【2022 Q4

    题目描述 密室逃生游戏 小强增在参加 密室逃生 游戏 当前关卡要求找到符合给定 密码K 升序的不重复小写字母组成 的箱子 并给出箱子编号 箱子编号为 1 N 每个箱子中都有一个 字符串s 字符串由大写字母 小写字母 数字 标点符号 空格组成
  • JS中的逻辑与和逻辑或

    JS中的逻辑或 符号 从字面上来说 只有前后都是 false 的时候才返回 false 否则返回 true console log 5 gt 6 6 gt 5 返回true 5 gt 6为false 但是 6 gt 5为true 所以返回
  • python-selenium页面定位不到元素

    1 查看是否有新的url打开 当前页面 mainHandle driver current window handle 获取所有的handle Handles driver window handles 循环遍历 找到不是当前页面的就切换
  • vue获取元素offsetTop,mounted获取不到offsetTop,获取元素距离页面顶边距离

    记录一下开发过程中遇到的坑 今天想做一个功能 当我评论完之后 页面跳到评论区顶部 于是就要获取到评论区距离页面顶部的距离 需要循环获取offsetTop来实现 但是在mounted阶段是无论如何都获取不到offsetParent的 不管是
  • C# 对数据库操作的函数总结

    SqlCommand ExecuteNonQuery 方法对连接执行 Transact SQL 语句并返回受影响的行数 可以写也可以读 1 可以使用ExecuteNonQuery 来执行目录操作 例如查询数据库的结构或创建诸如表等的数据库对
  • Unet 语义分割模型(Keras)

    文章目录 前言 一 什么是语义分割 二 Unet 1 基本原理 2 mini unet 3 Mobilenet unet 4 数据加载部分 参考 前言 最近由于在寻找方向上迷失自我 准备了解更多的计算机视觉任务重的模型 看到语义分割任务重U
  • BAT文件里注释符号

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在BAT文件批处理中注释的方式如下 1 注释内容 第一个冒号后也可以跟任何一个非字母数字的字符 2 rem 注释内容 不能出现重定向符号和管道符号 3 echo 注释内容
  • nginx配置https访问

    01 http https HTTP HyperText Transfer Protocol 超文本传输协议 是一种用于分布式 协作式和超媒体信息系统的应用层协议 简单来说就是一种发布和接收 HTML 页面的方法 被用于在 Web 浏览器和
  • 在ubuntu上安装splint

    lint lint是最著名的C语言工具之一 是由贝尔实验室SteveJohnson于1979在PCC PortableC Compiler 基础上开发的静态代码分析 一般由UNIX系统提供 工具介绍 与大多数C语言编译器相比 lint可以对