1use regex::Regex;
2
3pub struct JavaPatterns {
4 external_patterns: Vec<Regex>,
5 cache_patterns: Vec<Regex>,
6 extensions: Vec<String>,
7}
8
9impl JavaPatterns {
10 pub fn new() -> Self {
11 let external_patterns = vec![
12 Regex::new(r"\.class$").unwrap(),
14 Regex::new(r"\.jar$").unwrap(),
15 Regex::new(r"\.war$").unwrap(),
16 Regex::new(r"\.ear$").unwrap(),
17 Regex::new(r"\.aar$").unwrap(),
18
19 Regex::new(r"target/").unwrap(),
21 Regex::new(r"build/").unwrap(),
22 Regex::new(r"out/").unwrap(),
23 Regex::new(r"bin/").unwrap(),
24 Regex::new(r"classes/").unwrap(),
25
26 Regex::new(r"\.m2/").unwrap(),
28 Regex::new(r"\.mvn/").unwrap(),
29
30 Regex::new(r"\.gradle/").unwrap(),
32 Regex::new(r"gradle-app\.setting").unwrap(),
33 Regex::new(r"gradlew").unwrap(),
34 Regex::new(r"gradlew\.bat").unwrap(),
35
36 Regex::new(r"\.sbt/").unwrap(),
38 Regex::new(r"project/target/").unwrap(),
39
40 Regex::new(r"\.ivy2/").unwrap(),
42
43 Regex::new(r"\.lein-").unwrap(),
45 Regex::new(r"\.nrepl-port").unwrap(),
46
47 Regex::new(r"\.idea/").unwrap(),
49 Regex::new(r"\.eclipse/").unwrap(),
50 Regex::new(r"\.metadata/").unwrap(),
51 Regex::new(r"\.settings/").unwrap(),
52 Regex::new(r"\.project").unwrap(),
53 Regex::new(r"\.classpath").unwrap(),
54
55 Regex::new(r"\.apk$").unwrap(),
57 Regex::new(r"\.aab$").unwrap(),
58 Regex::new(r"\.dex$").unwrap(),
59 Regex::new(r"R\.java$").unwrap(),
60 Regex::new(r"proguard/").unwrap(),
61
62 Regex::new(r"\.jar\.original$").unwrap(),
64
65 Regex::new(r"hs_err_pid").unwrap(),
67 Regex::new(r"core\.\d+").unwrap(),
68
69 Regex::new(r"\.so$").unwrap(),
71 Regex::new(r"\.dll$").unwrap(),
72 Regex::new(r"\.dylib$").unwrap(),
73 Regex::new(r"\.jnilib$").unwrap(),
74 ];
75
76 let cache_patterns = vec![
77 Regex::new(r"\.m2/repository").unwrap(),
79 Regex::new(r"target/maven-").unwrap(),
80 Regex::new(r"target/surefire-").unwrap(),
81 Regex::new(r"target/failsafe-").unwrap(),
82
83 Regex::new(r"\.gradle/caches").unwrap(),
85 Regex::new(r"\.gradle/wrapper").unwrap(),
86 Regex::new(r"\.gradle/daemon").unwrap(),
87 Regex::new(r"\.gradle/native").unwrap(),
88 Regex::new(r"build/tmp/").unwrap(),
89
90 Regex::new(r"\.sbt/").unwrap(),
92 Regex::new(r"project/project/").unwrap(),
93 Regex::new(r"project/target/").unwrap(),
94
95 Regex::new(r"\.ivy2/").unwrap(),
97
98 Regex::new(r"\.idea/caches/").unwrap(),
100 Regex::new(r"\.idea/libraries/").unwrap(),
101 Regex::new(r"\.idea/modules\.xml").unwrap(),
102 Regex::new(r"\.idea/compiler\.xml").unwrap(),
103 Regex::new(r"\.idea/jarRepositories\.xml").unwrap(),
104
105 Regex::new(r"target/test-").unwrap(),
107 Regex::new(r"build/test-").unwrap(),
108 Regex::new(r"\.jacoco").unwrap(),
109 Regex::new(r"jacoco\.exec").unwrap(),
110
111 Regex::new(r"\.spring-boot-devtools-").unwrap(),
113
114 Regex::new(r"\.kotlin/").unwrap(),
116 Regex::new(r"kotlin-build/").unwrap(),
117
118 Regex::new(r"\.android/").unwrap(),
120 Regex::new(r"build/intermediates/").unwrap(),
121 Regex::new(r"build/generated/").unwrap(),
122
123 Regex::new(r"\.tmp").unwrap(),
125 Regex::new(r"\.temp").unwrap(),
126 Regex::new(r"\.log").unwrap(),
127
128 Regex::new(r"target/site/").unwrap(),
130 Regex::new(r"build/docs/").unwrap(),
131
132 Regex::new(r"\.hprof").unwrap(),
134 Regex::new(r"\.jfr").unwrap(),
135
136 Regex::new(r"\.checkstyle").unwrap(),
138 Regex::new(r"checkstyle-").unwrap(),
139
140 Regex::new(r"\.pmd").unwrap(),
142 Regex::new(r"pmd\.xml").unwrap(),
143
144 Regex::new(r"\.spotbugs").unwrap(),
146 Regex::new(r"spotbugsXml\.xml").unwrap(),
147 ];
148
149 let extensions = vec![
150 "java".to_string(),
152
153 "kt".to_string(), "kts".to_string(),
155
156 "scala".to_string(), "sc".to_string(),
158
159 "groovy".to_string(), "gvy".to_string(), "gy".to_string(), "gsh".to_string(),
161
162 "clj".to_string(), "cljs".to_string(), "cljc".to_string(), "edn".to_string(),
164
165 "gradle".to_string(),
167
168 "properties".to_string(),
170
171 "aidl".to_string(),
173
174 "aj".to_string(),
176
177 "jy".to_string(),
179
180 "jrb".to_string(),
182 ];
183
184 Self {
185 external_patterns,
186 cache_patterns,
187 extensions,
188 }
189 }
190
191 pub fn get_external_patterns(&self) -> &[Regex] {
192 &self.external_patterns
193 }
194
195 pub fn get_cache_patterns(&self) -> &[Regex] {
196 &self.cache_patterns
197 }
198
199 pub fn get_extensions(&self) -> &[String] {
200 &self.extensions
201 }
202
203 pub fn get_script_names() -> Vec<&'static str> {
204 vec![
205 "pom.xml", "pom.properties", "settings.xml",
207 "mvnw", "mvnw.cmd", ".mvn/wrapper/maven-wrapper.properties",
208
209 "build.gradle", "build.gradle.kts", "settings.gradle", "settings.gradle.kts",
211 "gradle.properties", "gradlew", "gradlew.bat",
212 "gradle/wrapper/gradle-wrapper.properties",
213
214 "build.sbt", "project/build.properties", "project/plugins.sbt",
216 "project/Dependencies.scala", "project/Settings.scala",
217
218 "project.clj", "profiles.clj", "lein-env",
220
221 "build.boot", "boot.properties",
223
224 "deps.edn", "bb.edn",
226
227 "build.xml", "ant.xml", "build.properties",
229
230 "ivy.xml", "ivysettings.xml",
232
233 "application.properties", "application.yml", "application.yaml",
235 "application-dev.properties", "application-prod.properties",
236 "bootstrap.properties", "bootstrap.yml",
237
238 "logback.xml", "logback-spring.xml", "log4j.properties",
240 "log4j2.xml", "log4j2.yml", "logging.properties",
241
242 "testng.xml", "junit-platform.properties",
244
245 ".project", ".classpath", ".factorypath",
247 "*.iml", "*.ipr", "*.iws",
248 ".idea/", ".settings/", ".metadata/",
249
250 "AndroidManifest.xml", "build.gradle", "gradle.properties",
252 "proguard-rules.pro", "proguard-android.txt",
253 "local.properties", "keystore.properties",
254
255 "web.xml", "context.xml", "server.xml",
257 "faces-config.xml", "beans.xml",
258
259 "persistence.xml", "hibernate.cfg.xml",
261 "mybatis-config.xml", "ehcache.xml",
262
263 "security.xml", "shiro.ini", "jaas.conf",
265
266 ".github/workflows/java.yml", ".github/workflows/maven.yml",
268 ".github/workflows/gradle.yml", ".gitlab-ci.yml",
269 "Jenkinsfile", "azure-pipelines.yml", "bitbucket-pipelines.yml",
270 "circle.yml", ".circleci/config.yml", ".travis.yml",
271
272 "Dockerfile", "docker-compose.yml", "docker-compose.yaml",
274 ".dockerignore", "Dockerfile.jvm", "Dockerfile.native",
275
276 "Procfile", "app.yaml", "appengine-web.xml",
278 "jboss-web.xml", "weblogic.xml", "glassfish-web.xml",
279
280 "checkstyle.xml", "pmd.xml", "spotbugs.xml",
282 "findbugs.xml", "sonar-project.properties",
283
284 "README.md", "CHANGELOG.md", "CONTRIBUTING.md",
286 "javadoc.xml", "overview.html",
287
288 "LICENSE", "LICENSE.txt", "COPYING", "NOTICE",
290
291 ".env", ".env.local", ".env.development", ".env.production",
293
294 "docker-compose.yml", "kubernetes.yml", "helm/",
296 "service.yml", "deployment.yml",
297
298 "quarkus.properties", "native-image.properties",
300
301 "micronaut.properties", "bootstrap.yml",
303
304 "vertx.json", "vertx-options.json",
306
307 "jmx.properties", "management.properties",
309
310 "orm.xml", "persistence.xml", "hibernate.properties",
312
313 "flyway.conf", "liquibase.properties",
315
316 "kafka.properties", "consumer.properties", "producer.properties",
318
319 "elasticsearch.yml", "log4j2.properties",
321
322 "micrometer.properties", "actuator.properties",
324
325 "toolchains.xml", "extensions.xml", "lifecycle-mapping-metadata.xml",
327
328 "native-image.properties", "reflection-config.json",
330 "resource-config.json", "proxy-config.json",
331 "jni-config.json", "serialization-config.json",
332 ]
333 }
334}