首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ArchUnit:如何检查类的签名/ API中不需要的依赖项?

ArchUnit是一个用于Java代码静态分析的开源库,它可以帮助开发人员检查类的签名和API中不需要的依赖项。通过使用ArchUnit,开发人员可以定义规则来验证代码的结构和设计是否符合预期。

要检查类的签名,可以使用ArchUnit提供的API来定义规则。例如,可以使用classes()方法选择要检查的类,然后使用should()方法定义规则。对于类的签名,可以使用haveSimpleName()方法指定类的名称,使用haveFullyQualifiedName()方法指定类的完全限定名称。此外,还可以使用should().bePublic()方法检查类是否是公共的。

要检查API中不需要的依赖项,可以使用ArchUnit提供的API来分析类之间的依赖关系。例如,可以使用noClasses()方法选择不需要依赖的类,然后使用should()方法定义规则。对于依赖项,可以使用dependOnClassesThat()方法指定依赖的类,使用should().notDependOnClassesThat()方法指定不需要依赖的类。此外,还可以使用should().dependOnClassesThat().resideInAnyPackage()方法指定依赖的类所在的包。

ArchUnit还提供了其他一些功能,如检查类的注解、方法的签名、字段的类型等。开发人员可以根据需要使用这些功能来进行更详细的静态分析。

对于ArchUnit的应用场景,它可以用于代码质量控制、代码规范检查、架构验证等方面。通过定义规则并在构建过程中运行ArchUnit,可以及早发现潜在的问题并保证代码的质量和可维护性。

腾讯云提供了一系列与云计算相关的产品,其中包括云服务器、云数据库、云存储等。这些产品可以帮助开发人员在云环境中部署和管理应用程序。具体而言,对于ArchUnit的应用场景,腾讯云的云服务器可以提供强大的计算能力,云数据库可以提供可靠的数据存储和管理,云存储可以提供高效的文件存储和传输。开发人员可以根据自己的需求选择适合的腾讯云产品来支持ArchUnit的使用。

更多关于腾讯云产品的介绍和详细信息,可以访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何更新 package.json 依赖

在一个项目中,其包依赖列表保存在 package.json 文件。每个已安装包都被分配了一个版本号,一般由 三部分组成:major.minor.patch 。...在上例,lodash 并未过期,因此没有被列出。同时,Prettier 在 minor 位落后于最新版本了,而 React 是在 major 位。 如果依赖被修改为这样: ?...npm install 会安装一个包及其依赖任何包。如果该包存在 package-lock 或 shrinkwrap 文件(在并存时后者优先级更高),将会按其进行依赖安装。...npm update 会更新依赖列表中出现所有包,同时也会安装缺失包。 二者区别是什么呢?...现在,package.json 依赖就被升级到最新了,包括 major 位更新: ? 剩下就简单了。运行 npm install 或 npm update 以完成升级。

5K10

Flutter:如何修复删除 .pub-cache 所有依赖

Flutter:如何修复/删除 .pub-cache 所有依赖 作者:坚果 华为云享专家,InfoQ签约作者,OpenHarmony布道师,电子发烧友鸿蒙MVP,阿里云专家博主,51CTO博客首席体验官...,开源项目GVA成员之一,专注于大前端技术分享,包括Flutter,小程序,安卓,VUE,JavaScript。.../pub-cache**文件夹一个或多个软件包有关问题,您可以通过执行以下命令重新安装所有缓存依赖: img 此过程可能需要几十秒到几十分钟,具体取决于要下载软件包数量和您互联网速度...如果要删除所有缓存包以获取更多可用磁盘空间或解决某些问题,请运行以下命令: flutter pub cache clean 您将被要求确认您决定: img 键入“Y”继续: img 到目前为止...,你必须在你项目中运行flutter pub get来安装你正在使用插件。

7.4K20

通过自动化单元测试形式守护系统架构

:通过单元测试形式对架构规则自动化检查 【优势】 支持丰富架构约束规则定制能力,例如分层依赖规则、包依赖规则、循环依赖、继承关系约束等 虽然以单测代码方式体现,但不影响主业务开发,可以通过增量方式引入...Archunit是一款免费、简单可扩展库,它可以使用任何Java单元测试框架来检查Java代码架构约束。...基于Archunit可以自动化检测: 循环依赖包含关系 依赖关系 和包包含关系 继承关系 注解 Archunit和代码质量分析工具关系如下图所示,二者都可以对代码进行分析,在功能覆盖上存在一定交叉...:基于职能分类对规则进行分组 图7.左侧:基于逻辑分类进行分组;右侧:基于职能分类进行分组 4.3 团队如何规范化 团队是否要引入Archunit本身也是一架构决策,建议采用文档化形式对该决策进行记录...引入Archunit进行架构约束自动化检查后,将对以下方面产生影响: 有助于降低系统架构腐化,提升系统可维护性 新库引入有一定学习成本 代码评审活动增加一活动:执行架构约束单元测试 开发成员日常开发需要持续执行并关注架构约束单测结果

20620

教你如何在Fedora,CentOS,RHEL检查RPM包依赖

我们都知道,在基于红帽Linux系统,一个RPM包,需要把先将它依赖其他包安装好才能正常工作。...但如果你是系统管理员或者RPM包管理员,你需要谙熟RPM包依赖关系,以便及时更新、删除适当包来保证系统正常运行。 在本教程,我将教大家如何检查RPM包依赖关系。...无论这个包是否已经安装进操作系统,我们都有一些办法来检查它们依赖性。 ? 方法一 使用RPM命令可以列出目标包所依赖所有包,如下: $ rpm -qR ? 注意,这种方法只适用于已安装包。...如果你需要检查一个未安装包依赖关系,你首先需要把这个包先下载到本地来(不需要安装)。...教程到这个地方,我们用到了几种办法来检查依赖关系。如果您想知道如何在居于Debian系统检查.deb依赖关系,请阅读另外一篇文档。

1.4K110

项目架构级别规约框架Archunit调研

简介 Archunit是一个免费、简单、可扩展库,用于检查Java代码体系结构。提供检查包和依赖关系、调用层次和切面的依赖关系、循环依赖检查等其他功能。...更多内建ArchRule或者通用内置规则使用,可以参考官方例子。 基本使用例子 基本使用例子,主要从一些常见编码规范或者项目规范编写规则对项目所有进行检查。 包依赖关系检查 ?...", "..com.foo.."); 依赖关系检查 ?...此外ArchUnit扩展一些API用于描述依赖代码之间关系,例如JavaMethodCall, JavaConstructorCall或JavaFieldAccess。...出于这个原因,ArchUnit提供了Lang层API,它提供了一种强大语法来以抽象方式表达规则。

85810

如何在 WPF 获取所有已经显式赋过值依赖属性

获取 WPF 依赖属性值时,会依照优先级去各个级别获取。这样,无论你什么时候去获取依赖属性,都至少是有一个有效值。有什么方法可以获取哪些属性被显式赋值过呢?...如果是 CLR 属性,我们可以自己写判断条件,然而依赖属性没有自己写判断条件地方。 本文介绍如何获取以及显式赋值过依赖属性。...---- 需要用到 DependencyObject.GetLocalValueEnumerator() 方法来获得一个可以遍历所有依赖属性本地值。...因此,你不能在这里获取到常规方法获取到依赖属性真实类型值。 但是,此枚举拿到所有依赖属性值都是此依赖对象已经赋值过依赖属性本地值。如果没有赋值过,将不会在这里遍历中出现。...,同时有更好阅读体验。

16540

代码检查又一利器:ArchUnit

这里我简单列出来了一些: 抛出异常不能太过广泛 不能写System.out,而是要用日志输出 不能使用java.util.logging 如果使用贫血模型开发,每个需要放到对应 接口不能放在实现...意思是ArchUnit是一款免费、简单可扩展库,它可以使用任何Java单元测试框架来检查Java代码架构。 也就是说,它主要功能是用来检查代码结构。那么怎么使用呢? 如何使用?...ArchUnit简单绝对不是空谈,如果你是maven项目,只需要在pom.xml文件添加如下依赖: com.tngtech.archunit</groupId...当然,也有一些内建通用规则,它们定义在 com.tngtech.archunit.library.GeneralCodingRules 这个。关于内建规则细节,可以查看官方文档。...https://github.com/TNG/ArchUnit-Examples 如何执行 规则定义好以后如何执行呢?

67110

“分布式” 开发规范治理​

针对于 Java 架构,我们有:ArchUnit 针对于 API,我们有:API Linter、Spectral 针对于数据库,我们有:SQLFluff 于是,在单体系统里,上述一系列情况得到了有效改善...即结合自动化测试、契约测试等,在运行测试时机,检查已有的系统是否遵循相关规范。 集成态。即对于规范检查配置在持续集成,有时会作为一种强制软件质量门禁。典型有 SonarQube 等。...ArchUnit 集成态 质量门禁 Sonarqube 运行态 服务依赖 Skywalking 当然了,还有一些是跨越了多个不同时机,诸如于契约测试,它是在开发时期定义,但是可能会在测试态、集成态才验证...然而,在过程,很大一部分内容都是在代码,由开发人员控制。作为一个开发者,也是一个 hacker,我们会习惯性: 跳过不需要自动化检查。 路过不需要测试。...与 ArchUnit 相比,Guarding 推荐这种守护方式是: 以 CLI 方式运行。无需额外编码工作,不担心系统被破坏。 配置在持续集成。 多系统多语言守护。

76310

ArchUnit,架构守护神 | 雷达哔哔哔

雷达描述: ArchUnit是一个基于 Java 测试库,用于检查代码结构特性,如包和依赖关系、注解验证,甚至还能检查代码分层是否一致。...我们很喜欢 ArchUnit 地方是,它可以在现有的测试环境以单元测试方式运行,尽管只支持基于 Java 架构。...在CI环境或部署流水线中集成ArchUnit 测试套件,可以方便地在演进式架构实现架构适应度函数。...ArchUnit是用来检查架构特征Java测试库,比如包与依赖关系、注解、甚至是调用层级一致性。它可以附加在现有的测试方案,以单元测试方式运行,但目前只能用于Java架构。...ArchUnit测试套件可以合并到持续集成环境及部署流水线,使我们可以更容易地利用架构适应度函数实现演进式架构。

2.1K20

Java 近期新闻:OmniFish 简介、Oracle 加入 Micronaut 基金会、OpenJDK 升级

3.0.0-M1 版本有一些显著变化,主要包括:依赖升级到 Spring Boot 3.x;对 GraalVM 支持基本完成;Spring Shell 现在是用 Gradle 构建。...这个方法是在 Components 定义,可以兼容 Jakarta Faces 3.0 和 4.0。...Apache Camel 3.19.0 发布,带来了 259 Bug 修复、改进和依赖升级,其中包括 gRPC 1.48.1、Spring Boot 2.7.3、JUnit 5.9 以及 Artemis...ArchUnit TNG 科技咨询公司发布了 ArchUnit 1.0.0 版本,这是一个可扩展开源库,用于检查 Java 代码架构,检查包和、层和片之间依赖关系,并检查循环依赖关系。...该版本带来了多项增强,包括:不再将 archunit_ignore_patterns.txt 文件定义忽略规则与 FreezingArchRule 一起填充 ViolationStore 接口实例

1.6K30

Java 异常|Java Exceptions

在本文中,我将解释如何使用 Java Exception 以及如何在考虑现有 Java Exceptions 设计情况下创建异常结构。...检查 异常迫使开发人员创建处理程序异常或重新抛出它们。如果重新抛出已检查异常,则 java 函数必须在其签名声明它。Unchecked 异常 unline checked 不需要任何处理。...缺少依赖添加依赖或修复依赖配置不是的初始化期间加载失败低更改初始化过程是的是的 因此,在大多数情况下,您需要做就是更改 JVM 配置或添加缺少依赖。...文件未找到异常该文件不存在高创建文件不不应用程序调用错误路径低修复错误路径生成是的是的IO异常访问资源无效高让资源再次可用不不未找到异常该类未添加依赖添加缺少依赖不是的实现调用了错误中等更改调用是的是的异常架构与查询不匹配高将缺失脚本应用到数据库不不查询错误低更改查询是的是的拒绝连接高打开数据库...即使在设计库情况下,您仍然可以在方法签名中保留运行时异常,并在 API 添加一些注释。在这种情况下,您 API 用户将能够决定如何处理它。

3.1K40

Gradle 5.0 新特性介绍

通过新性能、依赖管理、日志记录和废弃API使用检查,构建扫描有了显著改进。...我们将最近版本主要改进分为以下几类: 更快构建 细粒度传递依赖关系管理 编写Gradle构建逻辑 更高效内存级别执行 新Gradle调用选项 新Gradle任务和插件api 在文章末尾,您可以进一步了解如何升级到...4.构建扫描 通过对性能、依赖管理、日志记录和废弃api使用进行新检查,构建扫描有了显著改进。...这避免了由于以前在编译路径包含运行时依赖而导致性能下降和依赖泄漏。...4.发布 APIs Gradle 5.0引入了新api来改进对Maven和Ivy存储库发布: 签名插件支持对发布所有产物签名。 发布了配置范围内依赖排除。

2.8K30

Guarding:开源多语言架构守护工具

基于 LSP 语法分析。我短暂评估过采用 LSP (Language Server Protocol )方式,但是使用 LSP 意味着:引入更多语言相关依赖。所以,依旧是不可行路线。...包路径解析 值得一提是包路径解析,所以我们包解析方式参考ArchUnit 设计方式。...如何使用 Guarding 进行架构守护 Guarding 采用是 Rust 语言,所以二进制是直接支持所有的主流操作系统。...其次,我们采用是 CLI 方式,因此可以在任何阶段采用,如: 在本地结合 Git Hook 进行代码预提交检查。 在持续集成阶段,配合流水线工作使用。...结合 IDEA / 编辑器插件进行实时检查(还没有实现)。 当然了,这个是适用于单个团队处理方式。

76720

架构守护代码化:架构文档即测试

它设计了一套外部 DSL,其借鉴于 ArchUnit 设计内部 DSL 语法。 架构腐化:为什么我们需要架构守护? 观察软件架构在开发过程变化, 是一件非常有意思事情。...系统在中后期开发过程,先前架构师缺乏对于架构关注,又或者是经历了一些人员变更,导致了系统出现了一处又一处架构不一致。当然,其中还有一典型原因是,架构相关文档和规范缺乏了维护。...所以,每个人对于架构形态都掌握得差不多,不需要过多记录也能知晓设计。沉淀下来文案往往只是一些决策结果,缺乏过程式讨论等。...因为这一种种原因,所以在过去几年里,我们一直在推崇『架构决策记录』(ADR),记录每一架构上下文、决策和结果等相关信息。...("com.foo") 这句话里,描述了一个规则: Foo 开头应该放在 com.foo 包下。

52530

持续测试重要性

书中给出该过程示意图: 持续架构本质就是为了在架构不断演进过程避免架构腐化,而避免架构腐化前提则需要迅速而及时地知道架构可能走向腐化征兆。...通过建立评估架构指标,尤其是评估架构质量属性指标,然后利用持续测试建立相应指标的测试用例,将其融入到CI/CD流水线,让每次代码变更提交都必须通过指标的验证,如此就建立了对架构质量反馈循环。...03 包依赖检查 在为中国香港一家客户提供架构评审咨询时,我引入了ArchUnit工具,它支持我们以编写单元测试方式对系统架构指标——包依赖关系——进行检查: 使用该工具非常方便,直接在maven...加入它依赖,之后就可以像编写单元测试那样调用ArchUnitAPI对包依赖关系进行检查。...例如,假设不允许source包依赖foo包,如下图所示: 则可以在单元测试编写如下代码: noClasses().that().resideInAPackage("..source..")

46120

Kubernetes v1.24版特性介绍篇

此外,您需要做些什么来确保您集群不会倒塌! 有什么影响吗? 如果您正在滚动自己集群或不确定此删除是否会影响您,请保持安全并检查您是否对 Docker Engine 有任何依赖关系。...注意:使用 Docker Desktop 构建应用程序容器,不是集群 Docker 依赖。...要检查节点运行时,请遵循找出节点上使用容器运行时。...无论您是滚动自己集群还是使用来自云提供商托管 Kubernetes 服务,您都可能需要迁移依赖于 Docker Engine 遥测或安全代理。 Docker 依赖怎么办?...签名发布工件 在1.24版本,发布工件将使用cosign进行签名,同时提供实验性镜像签名验证支持。发布工件签名与验证属于Kubernetes软件发布供应链安全性改进举措之一。

96810

Gradle 5.0 正式版发布

构建扫描 通过对性能、依赖管理、日志记录和废弃api使用进行新检查,构建扫描有了显著改进。...细粒度传递依赖管理 Gradle 5.0提供了几个新特性来定制如何选择依赖,以及改进POM和BOM支持: 依赖约束允许您定义版本或版本范围,从而限制和传递依赖版本(Maven不支持)。...这可以有效避免由于以前在编译路径包含运行时依赖而导致性能下降和依赖泄漏问题。 Gradle现在也可以用在元素。...依赖对齐 依赖版本对齐,允许属于同一逻辑组(平台)不同模块在依赖拥有相同版本。 这确保所有Spring或Hibernate依赖具有相同版本问题。...主要包括: 签名插件支持对发布所有工件签名。 发布了配置范围内依赖排除。 Maven发布和Ivy发布插件提供类型安全dsl来定制作为发布一部分生成pom或Ivy模块。

2.3K30

Gradle 5.0 正式版发布

依赖对齐和版本锁定提供了可扩展且灵活依赖管理模型。通过新性能和依赖关系管理、日志记录和弃用 API 使用检查,构建扫描得到了显著改进。...构建扫描 通过对性能、依赖管理、日志记录和废弃api使用进行新检查,构建扫描有了显著改进。...细粒度传递依赖管理 Gradle 5.0提供了几个新特性来定制如何选择依赖,以及改进POM和BOM支持: 依赖约束允许您定义版本或版本范围,从而限制和传递依赖版本(Maven不支持)。...这可以有效避免由于以前在编译路径包含运行时依赖而导致性能下降和依赖泄漏问题。 Gradle现在也可以用在元素。...主要包括: 签名插件支持对发布所有工件签名。 发布了配置范围内依赖排除。 Maven发布和Ivy发布插件提供类型安全dsl来定制作为发布一部分生成pom或Ivy模块。

1.6K20
领券