在centos上安装splint

2023-10-27

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的中文资料

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

在centos上安装splint 的相关文章

  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • 命名互斥体的 Mono 替代方案

    在 Windows NET 上 命名的互斥体可用于同步多个进程 不幸的是 Mono 在 Linux 上不太支持这一点 他们的发行说明 http www mono project com Release Notes Mono 2 8 Shar
  • 我可以在 Ubuntu 上使用 Homebrew 吗?

    我只是尝试使用 Homebrew 和 Linuxbrew 在我的 Ubuntu 服务器上安装软件包 但都失败了 这就是我尝试安装它们的方法 sudo apt get install build essential curl git m4 r
  • GCC 详细模式输出解释

    我是 Linux 新手 谁能向我解释一下我的 hello world 程序的以下详细模式输出 另外 这些文件是做什么用的crt1 o crti o crtend o crtbegin o and crtn o and lc and lgcc
  • 使用 Python 将阿拉伯语或任何从右到左书写系统的字符串打印到 Linux 终端

    非常简单的例子是 city print city 我期望输出是 但实际上输出是相反的字符串 字母看起来有点不同 因为它们有开始 中间和结束形式 我无法将其粘贴到此处 因为复制粘贴会再次更正字符串的顺序 如何在 Linux 终端上正确打印阿拉
  • 使用 .htaccess 启用 PHP 短标签

    我在自己的 Centos 服务器上设置了 Apache 并具有多个虚拟 Web 服务器 并且我希望仅为位于以下位置的其中一个 Web 服务器启用 PHP 短标记 var www ostickets html 我可以通过添加成功启用短标签sh
  • PHP mail() 函数不发送邮件

    我有一个小问题 我正在使用一个工作脚本 在我的测试帐户 共享服务器上工作 使用 mail 函数通过 PHP 发送邮件 我刚刚得到了一个专用服务器 但我还无法让该功能发挥作用 在过去的 10 个小时左右的时间里 我阅读了有关 BIND 用于
  • 进程如何知道它已收到信号

    如果我错了 请纠正我 以下是我对信号的理解 据我所知 信号生成 和信号传递有2个不同 事物 为了产生信号 操作系统只是在位数组中设置一个位 在过程控制中维护 工艺块 PCB 每一位 对应于特定信号 当设置一个位时 这意味着 该位对应的信号为
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • 使用 hcitool 扫描低功耗蓝牙?

    当我运行此命令时 BLE 设备扫描仅持续 5 秒 sudo timeout 5s hcitool i hci0 lescan 输出显示在终端屏幕中 但是 当我将输出重定向到文件以保存广告设备的地址时 每次运行该命令时 我都会发现该文件是空的
  • 在bash中用其他文件过滤一个文件

    我有一个带有数字的文件 例如 cat file 31038467 32048169 33058564 34088662 35093964 31018168 31138061 31208369 31538163 31798862 和其他例如
  • %config(noreplace) 文件上出现意外的 RPM 冲突

    我正在创建我自己的RPM using rpmbuild My RPM 包含配置文件哪个应该永远不会被覆盖 即使 RPM 包含这些配置文件的新版本 为了存档这个 我用以下标签标记了它们 config noreplace opt mypacka
  • C# - OPC-UA 服务器应用程序尚未在 Linux 计算机中创建 PKI 证书

    当我跑步时OPC UA serverWindows 机器中的 C 应用程序 然后 OPC UA 服务器已创建证书路径C ProgramData OPC Foundation pki own 并在此路径中生成一些证书 但是当我在中安装 OPC
  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • 在Linux中将日期附加到文件名

    我想在文件名旁边添加日期 somefile txt 例如 somefile 25 11 2009 txt 或 somefile 25Nov2009 txt 或任何类似的内容 也许脚本或终端窗口中的某些命令可以执行 我正在使用Linux Ub
  • 早于 0.4.12 的 Node.js 无法在 AWS EC2 上正常工作。为什么?

    我无法在 AWS EC2 Ubuntu 或 CentOs 没关系 上安装 node js v0 6 1 安装后我输入node 处理器负载达到100 但 v0 4 12 工作正常 可能只有我有这个问题 那不好意思了 请告诉我我做错了什么 提前
  • 为什么“script”命令会生成 ^[ 和 ^M 字符以及如何使用 vim 搜索和替换删除它们?

    在linux上 使用bash shell 当我使用script命令时 生成的文件称为typescript 当我用 vim 打开该文件时 每一行都包含 M字符 并且有几行 由于我的彩色命令提示符 包含一个字符 我想用任何东西替换这些字符 从而
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径
  • 为什么 proc/ID/maps 有多个共享库条目

    我正在查看嵌入式Linux下的proc ID maps 我注意到一些共享库在进程的内存映射中出现了几次 为什么会这样呢 40094000 400d9000 r xp 00000000 b3 09 723 system lib libc so

随机推荐

  • 认识计算机选题背景,与计算机专业相关的论文_计算机专业的毕业论文题目有哪些_大一我对计算机的认识3000字论文...

    求个金融学和计算机科学与技术这两个专业相关的论文题目 展开全部 互联网金融对传统银行业的影响分析与研究 或者针对某一个细分 比如P2P 支付宝 蚂蚁金融等等 为什么身边的人都想学计算机 计算机真的有那么好吗 作为资深码农 个人觉得这个问题可
  • 最大不能组合数和不能组合数的个数

    A New Change Problem Time Limit 5000 1000 MS Java Others Memory Limit 32768 32768 K Java Others Total Submission s 1609
  • Lua脚本做游戏外挂

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 第一件事当然就是搞账号 淘宝某店 一元100个网易邮箱 店铺已打马赛克 支付后老板给我发了一堆账号 粘贴word文档看下对不对数 刚好100个 不然就差评了 如果这100个
  • 最适合初学者的Python入门详细攻略,一文讲清,赶紧收藏

    目前python可以说是一门非常火爆的编程语言 应用范围也非常的广泛 工资也挺高 未来发展也极好 Python究竟应该怎么学呢 我自己最初也是从零基础开始学习Python的 给大家分享Python的学习思路和方法 一味的买书看书 看视频 是
  • 材料阅读 - 物联网设备指纹 - 某篇论文的相关工作

    20201030 本篇论文 1 是在了解设备指纹的时候看到的 一开始没仔细看 这两天正好集中整理一下 但是这篇文章说实话 不敢苟同 我仔细读了读就感觉有很大问题 看不到具体的干货 文章地址是 1 看了一下他这里的一个同行评议 无话可说 我在
  • jQuery 判断数组集合 是否包含相同元素.

    定义 组装数组对象 筛选重复对象 isRepeat function data var i 0 var obj var arry for i i lt data length i obj data i if
  • 强化学习 学习资料整理(持续更新)

    关于强化学习 比较经典的书当然是 Richard Sutton 的 Reinforcement Learning An Introduction 下面的资料大部分也是关于这本书的读书笔记和相关课程及代码 教学视频系列 强化学习纲要 十课 代
  • 2028:【例4.14】百钱买百鸡

    2028 例4 14 百钱买百鸡 时间限制 1000 ms 内存限制 65536 KB 提交数 1393 通过数 595 题目描述 百钱买百鸡问题 鸡翁一 值钱五 鸡母一 值钱三 鸡雏三 值钱一 百钱买百鸡 问鸡翁 鸡母 鸡雏各几何 输入
  • 使用线程以及对信号量 AutoResetEvent和ManualResetEvent的理解

    声明线程 DoThreads是串口执行的方法名称 Thread DoThreads new Thread new ThreadStart DoThreads DoThreads IsBackground true 是否跟着主线程结束而结束
  • 【翻译】 用纸质电路增加开源的包容性

    你知道吗 LWN net是一份由订阅者支持的出版物 我们依靠订阅者来维持整个运作 请通过购买订阅来帮助我们 让LWN继续在网上运行 作者 Jonathan Corbet 2018年1月30日 linux conf au 开源软件有一个包容性
  • JS正则表达式(二)

    取得字符串的字节长度 代码 function strlen str var i var len len 0 for i 0 i
  • 行人重识别(ReID)概述

    什么是Re ID 行人重识别 Person Re identification也称行人再识别 简称为ReID 是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术 广泛被认为是一个图像检索的子问题 给定一个监控行人图像 检索跨设
  • mysql 快照和binlog_利用快照卷和日志文件对mysql数据库备份和恢复

    基于快照卷做备份和日志文件做恢复 1 首先对数据库施加读锁 2 记录二进制日志文件的文件名和事件位置 3 创建快照卷 4 解锁数据库 5 挂载快照卷 复制数据文件 6 删除快照卷 登录mysql服务器 root station58 mysq
  • 使用python中的matplotlib绘画激活函数图像

    使用python中的matplotlib绘画激活函数图像 import matplotlib pyplot as plt import numpy as np plt rcParams font sans serif SimHei 显示汉字
  • 1033 旧键盘打字(20)(20 分)

    旧键盘上坏了几个键 于是在敲一段文字的时候 对应的字符就不会出现 现在给出应该输入的一段文字 以及坏掉的那些键 打出的结果文字会是怎样 输入格式 输入在2行中分别给出坏掉的那些键 以及应该输入的文字 其中对应英文字母的坏键以大写给出 每段文
  • 使用Python对excel中的数据进行处理

    一 读取excel中的数据 首先引入pandas库 没有的话使用控制台安装 pip install pandas import pandas as pd 引入pandas库 别名为pd read excel用于读取excel中的数据 这里只
  • Filtering arrays in Dart

    Dart Filtering arrays in Dart 初探Dart 初次接触Dart这个语言 感觉语法还是还是很舒服的 定义类 枚举什么的 语言都挺简洁 很友好的构造函数 这种最新的语言能够兼容之前老的语言的很多优点 唯一感觉不能理解
  • 7-1 用格里高利公式求给定精度的PI值 (15分)

    教育超市 浙大版 C语言程序设计 第3版 第4章 循环结构 练习4 1 用格里高利公式求 的近似值 本题要求编写程序 计算序列部分和 4 1 1 3 1 5 1 7 直到最后一项的绝对值小于给定精度eps 输入格式 输入在一行中给出一个正实
  • Android平台功耗优化方案总结之软件层功耗定位?

    功耗和温升通常是Android系统的硬伤 尤其是结构空间有限的Android系统设备 比如用Android系统开发的手表设备 结构有限意味着能放的电池容量不会很大 导致待机时间变得特别短 而且通常这种手表设备的在原始Android系统上 功
  • 在centos上安装splint

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