在centos上安装splint

news2024/11/24 10:51:55

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

在 centos上安装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的中文资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/588316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day56【动态规划】583.两个字符串的删除操作、72.编辑距离

583.两个字符串的删除操作 力扣题目链接/文章讲解 视频讲解 1、确定 dp 数组下标及值含义 dp[i][j]:以下标 i 为结尾的字符串 word1,和以下标 j 为结尾的字符串 word2,想要达到相等,所需要删除元素的最少次数为 dp[i][j] 2、…

【1110. 删点成林】

来源:力扣(LeetCode) 描述: 给出二叉树的根节点 root,树上每个节点都有一个不同的值。 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的…

LeetCode——可被三整除的偶数的平均值

#全国科技者工作日—为创新和未来而努力# 目录 1、题目 2、题目解读 3、代码 1、题目 2455. 可被三整除的偶数的平均值 - 力扣(Leetcode) 给你一个由正整数组成的整数数组 nums ,返回其中可被 3 整除的所有偶数的平均值。 注意&#xff…

论文阅读:Directed Greybox Fuzzing

一、论文相关信息 二、现有研究的不足 现有的Greybox模糊器(GF)无法有效地定向到有问题的更改或补丁、关键系统调用或危险位置、或定向到我们希望重现的已报告漏洞的堆栈跟踪中的函数。 三、知识点 (1)introduction 定向模糊测试…

第二章(一):Django框架的模型(Model)

系列文章目录 备注:这里是Django系列文章的所有文章的目录 第一章(一) : Django框架如何创建项目、创建应用、创建templates;如何启动django项目; 第一章(二):Django框架的模式、路由、视图; 第一章(三):Dj…

learn C++ NO.7——C/C++内存管理

引言 现在是5月30日的正午,图书馆里空空的,也许是大家都在午休,也许是现在37摄氏度的气温。穿着球衣的我已经汗流浃背,今天热火战胜了凯尔特人,闯入决赛。以下克上的勇气也激励着我,在省内垫底的大学中&am…

JS的异或运算XOR

概念 异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。 两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。 JavaScript 语言…

企业级信息系统开发——Spring Boot加载自定义配置文件

文章目录 一、使用PropertySource加载自定义配置文件(一)创建Spring Boot Web项目ConfigDemo01(二)创建自定义配置文件(三)创建自定义配置类(四)编写测试方法(五&#xf…

一键部署属于自己的ChatGPT-Next-Web

完整功能刚需: OpenAI 注册登录之后给的 api Key GitHub账号 Netlify账号 Tip: 注册 OepenAI账号 需要用国外手机号 这里建议去一些渠道购买账号 十块钱不到如果访问 OpenAI 的话 一定要挂欧美节点 否则禁止IP访问 概率会被封号为什么用 Netlify 托…

测试替身Test Doubles的5类型(Mockito)

测试替身Test Doubles的5类型(Mockito) 我们有一个名为 BankAccount 的类。 数据库用于存储和检索银行帐户信息。 我们想测试 BankAccount 中的逻辑,而不必担心它使用的底层数据库.由此类实现——它将 SQL 查询发送到数据库并返回其中包含的值。 测试替身Test Dou…

SuperMap iDesktopX扩展开发之GPA算子扩展

作者:dongyx SuperMap iDesktopX是超图研究院推出的一款跨平台的桌面GIS软件,兼容Windows和Linux,同时iDesktopX也采用的是插件式扩展开发框架,支持定制开发。 使用iDesktopX定制开发有以下优势: ⚫ 采用 Swing 图形界…

VM虚拟机仿真网络问题

在电子数据取证中,拿到一个镜像需要仿真的时候,经常会遇到网络问题。尤其是Linux服务器镜像,例如centos操作系统的镜像,一般镜像会有固定IP设置,仿真起来后,系统与本机不能建立连接,不能连接互联…

VSCode远程连接Ubuntu使用LLDB调试程序

VSCode已经具有远程开发的能力,可以使用SSH连接到Linux/MacOS进行远程开发,包括编译与调试,只需要安装Remote Development插件即可,如果想使用CMake管理项目,则需要将VSCode的CMake以及CMake Tools插件安装在远程机器上…

SpringBoot自定义打印横幅

众所周知,springboot项目启动的时候会打印横幅,横幅内容就是spring; 而spring boot提供了一个Banner接口用于处理启动横幅,默认情况下启动会打印如下信息 . ____ _ __ _ _/\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \ ( (…

分布式系统

一.分布式理论基础 1.CAP理论 CAP定理是分布式系统中的重要理论,在一个分布式系统中最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的…

以太网驱动的流程浅析(五)-mii_bus初始化以及phy id的获取

【硬件环境】 Imx6ul 【Linux kernel版本】 Linux4.1.15 【以太网phy】 Realtek8201f 1.1. 以太网驱动probe流程 1.1 mii_bus初始化以及phy id的获取 然后进行mii的一些初始化fec_enet_mii_init(pdev); 主要是对struct mii_bus这里的成员进行初始化 并且会做注册mdiobus的…

小笔记-简单但够用系列_jupyter notebook 的重新安装问题

文章目录 目的目标步骤 目的 做程序开发时,想到 jupyter notebook 的浏览器交互式执行,决定再次启用放置许久的 jupyter notebook。 但太久没有执行的 jupyter notebook 在打开页面有一旦打开或创建新的 python,就自动报错退出。 使用过往经…

Blender UV展开流程

目录 1. UV1.1 blender默认物体1.2 创建物体1.3 UV参考图1.4 标记缝合边1.5 UV拉伸1.6 孤岛模式 1. UV 1.1 blender默认物体 默认物体已经自动生成UV 在UV编辑工作区,编辑模式,全选物体在左边自动展开UV 在物体数据属性-UV贴图-存在默认的UV贴图&#…

华为OD机试真题B卷 Java 实现【输入整型数组和排序标识,对其元素按照升序或降序进行排序】,附详细解题思路

一、题目描述 输入整型数组和排序标识,对其元素按照升序或降序进行排序 数据范围: 1≤n≤1000 ,元素大小满足 0≤val≤100000 。 二、输入描述 第一行输入数组元素个数;第二行输入待排序的数组,每个数用空格隔开;第三行输入一个整数0或1。0代表升序排序,1代表降序排序…

UOS桌面系统使用RLinux恢复数据

UOS桌面系统使用RLinux恢复数据 一、工具介绍二、注意事项三、准备四、制作live系统启动盘五、拷贝文件六、进入live系统一、工具介绍 R-Linux 是一款用于 Linux 和某些 Unixes 操作系统 Ext2/Ext3/Ext4 FS 文件系统的免费文件恢复实用工具。R-Linux 与 R-Studio 使用相同的 I…