Spring Boot
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

231 lines
7.8 KiB

<?xml version="1.0"?>
<!DOCTYPE import-control PUBLIC "-//Checkstyle//DTD ImportControl Configuration 1.4//EN" "https://checkstyle.org/dtds/import_control_1_4.dtd">
<import-control pkg="org.springframework.boot">
<!-- Only use Micrometer Observation -->
<allow pkg="io.micrometer.observation" />
<disallow pkg="io.micrometer" />
<!-- Use JSpecify for nullability (not Spring) -->
<allow class="org.springframework.lang.Contract" />
<disallow pkg="org.springframework.lang" />
<!-- Allow other imports -->
<allow pkg=".*" regex="true" />
<!-- Keep foundation packages away from 'org.springframework.boot' package -->
<subpackage name="ansi">
<disallow pkg="org.springframework.boot" exact-match="true"/>
</subpackage>
<subpackage name="availability">
<disallow pkg="org.springframework.boot" exact-match="true"/>
</subpackage>
<subpackage name="bootstrap">
<disallow pkg="org.springframework.boot" exact-match="true"/>
</subpackage>
<subpackage name="context">
<subpackage name="properties">
<subpackage name="bind">
<disallow pkg="org.springframework.boot" exact-match="true"/>
</subpackage>
<subpackage name="source">
<disallow pkg="org.springframework.boot" exact-match="true"/>
</subpackage>
</subpackage>
</subpackage>
<subpackage name="env">
<disallow pkg="org.springframework.boot" exact-match="true"/>
</subpackage>
<subpackage name="info">
<disallow pkg="org.springframework.boot" exact-match="true"/>
</subpackage>
<subpackage name="io">
<disallow pkg="org.springframework.boot" exact-match="true"/>
</subpackage>
<subpackage name="ssl">
<disallow pkg="org.springframework.boot" exact-match="true"/>
</subpackage>
<subpackage name="origin">
<disallow pkg="org.springframework.boot" exact-match="true"/>
</subpackage>
<subpackage name="util">
<disallow pkg="org.springframework.boot" exact-match="true"/>
</subpackage>
<!-- Open direct use of micrometer to specific subpackages -->
<subpackage name="metrics">
<allow pkg="io.micrometer" />
</subpackage>
<subpackage name=".*\.metrics" regex="true">
<allow pkg="io.micrometer" />
</subpackage>
<subpackage name=".*\.autoconfigure" regex="true">
<allow pkg="io.micrometer" />
</subpackage>
<subpackage name="docs">
<allow pkg="io.micrometer" />
</subpackage>
<subpackage name="test">
<subpackage name="autoconfigure">
<subpackage name="actuate">
<allow pkg="io.micrometer" />
</subpackage>
</subpackage>
</subpackage>
<!-- Keep logging focused on lower level packages (binding and AOT) -->
<subpackage name="logging">
<allow pkg="org.springframework.boot.context.properties" />
<allow pkg="org.springframework.boot.context.properties.bind" />
<allow pkg="org.springframework.context.aot" />
<disallow pkg="org.springframework.context" />
<disallow pkg="org.springframework.boot.context" />
</subpackage>
<!-- Web related concerns -->
<subpackage name="web">
<!-- Lock things down -->
<disallow pkg="org.springframework.boot.web" />
<disallow pkg="org.springframework.web.servlet" />
<disallow pkg="jakarta.servlet" />
<!-- Common -->
<subpackage name="context">
<allow pkg="org.springframework.context" />
<subpackage name="servlet">
<allow pkg="org.springframework.boot.web.servlet" />
<allow pkg="jakarta.servlet" />
</subpackage>
</subpackage>
<subpackage name="server">
<allow pkg="org.springframework.boot.web.error" />
<allow pkg="org.springframework.boot.web.server" />
<disallow pkg="org.springframework.context" />
<subpackage name="autoconfigure">
<allow pkg="org.springframework.context" />
<subpackage name="servlet">
<allow pkg="jakarta.servlet" />
<allow pkg="org.springframework.boot.web.servlet" />
</subpackage>
</subpackage>
<subpackage name="client">
<allow pkg="jakarta.servlet" />
<allow pkg="org.springframework.context" />
</subpackage>
<subpackage name="context">
<allow pkg="org.springframework.context" />
</subpackage>
<subpackage name="reactive">
<subpackage name="context">
<allow pkg="org.springframework.context" />
<allow pkg="org.springframework.web.context" />
<allow pkg="org.springframework.boot.web.context.reactive" />
</subpackage>
</subpackage>
<subpackage name="servlet">
<allow pkg="jakarta.servlet" />
<allow pkg="org.springframework.boot.web.servlet" />
<subpackage name="context">
<allow pkg="org.springframework.context" />
<allow pkg="org.springframework.web.context" />
<allow pkg="org.springframework.boot.web.context.servlet" />
</subpackage>
</subpackage>
<subpackage name="test">
<allow pkg=".*" regex="true" />
</subpackage>
</subpackage>
<!-- Servlet -->
<subpackage name="servlet">
<allow pkg="jakarta.servlet" />
<subpackage name="filter">
<allow pkg="jakarta.servlet" />
<allow pkg="org.springframework.boot.web.servlet" />
</subpackage>
<subpackage name="support">
<allow pkg="jakarta.servlet" />
<allow pkg="org.springframework.boot.web.error" />
<allow pkg="org.springframework.boot.web.context.servlet" />
<allow pkg="org.springframework.boot.web.servlet" />
</subpackage>
<subpackage name="view">
<allow pkg="org.springframework.web.servlet" />
</subpackage>
<subpackage name="error">
<allow pkg="org.springframework.boot.web.error" />
<allow pkg="org.springframework.web.servlet" />
</subpackage>
</subpackage>
<!-- Reactive -->
<subpackage name="reactive">
<subpackage name="context">
<allow pkg="org.springframework.boot.web.context" />
</subpackage>
<subpackage name="error">
<allow pkg="org.springframework.boot.web.error" />
</subpackage>
<subpackage name="result">
<subpackage name="view">
<allow pkg="org.springframework.boot.web.reactive.result.view" />
</subpackage>
</subpackage>
</subpackage>
</subpackage>
<!-- Actuator endpoint infrastructure -->
<subpackage name="actuate">
<subpackage name="endpoint">
<disallow pkg="org.springframework.http" />
<disallow pkg="org.springframework.web" />
<subpackage name="web">
<allow pkg="org.springframework.http" />
<allow pkg="org.springframework.web" />
<subpackage name="servlet">
<disallow pkg="org.springframework.web.reactive" />
</subpackage>
<subpackage name="reactive">
<disallow pkg="org.springframework.web.servlet" />
</subpackage>
</subpackage>
</subpackage>
</subpackage>
<!-- Web Servers -->
<subpackage name="tomcat|undertow|jetty|reactor" regex="true">
<allow pkg="org.springframework.boot.web.server" />
<disallow pkg="org.springframework.boot.web" />
<disallow pkg="org.springframework.web.servlet" />
<disallow pkg="org.springframework.web.reactive" />
<subpackage name="servlet">
<allow pkg="jakarta.servlet" />
<allow pkg="org.springframework.boot.web.server" />
<allow pkg="org.springframework.boot.web.servlet" />
<allow pkg="org.springframework.boot.web.error" />
<allow pkg="org.springframework.web.servlet" />
</subpackage>
<subpackage name="reactive">
<allow pkg="org.springframework.boot.web.server" />
<allow pkg="org.springframework.boot.web.codec" />
<allow pkg="org.springframework.boot.web.reactive" />
<allow pkg="org.springframework.web.reactive" />
</subpackage>
<subpackage name="autoconfigure">
<subpackage name="servlet">
<allow pkg="jakarta.servlet" />
<allow pkg="org.springframework.boot.web.servlet" />
<allow pkg="org.springframework.boot.web.error" />
<allow pkg="org.springframework.web.servlet" />
</subpackage>
<subpackage name="reactive">
<allow pkg="org.springframework.boot.web.codec" />
<allow pkg="org.springframework.boot.web.reactive" />
<allow pkg="org.springframework.web.reactive" />
</subpackage>
</subpackage>
</subpackage>
</import-control>