diff --git a/src/main/java/io/github/randomcodespace/iq/detector/config/GitHubActionsDetector.java b/src/main/java/io/github/randomcodespace/iq/detector/config/GitHubActionsDetector.java index ce2cc684..63d228ef 100644 --- a/src/main/java/io/github/randomcodespace/iq/detector/config/GitHubActionsDetector.java +++ b/src/main/java/io/github/randomcodespace/iq/detector/config/GitHubActionsDetector.java @@ -80,7 +80,7 @@ public DetectorResult detect(DetectorContext ctx) { if (onTriggers == null) { // SnakeYAML may parse bare 'on' key as Boolean.TRUE — search by entry value onTriggers = data.entrySet().stream() - .filter(e -> Boolean.TRUE.equals(e.getKey())) + .filter(e -> "true".equals(String.valueOf(e.getKey()))) .map(java.util.Map.Entry::getValue) .findFirst() .orElse(null); diff --git a/src/main/java/io/github/randomcodespace/iq/detector/csharp/CSharpStructuresDetector.java b/src/main/java/io/github/randomcodespace/iq/detector/csharp/CSharpStructuresDetector.java index 7286bd5a..d72cc7c1 100644 --- a/src/main/java/io/github/randomcodespace/iq/detector/csharp/CSharpStructuresDetector.java +++ b/src/main/java/io/github/randomcodespace/iq/detector/csharp/CSharpStructuresDetector.java @@ -211,7 +211,7 @@ protected DetectorResult detectWithRegex(DetectorContext ctx) { String path = httpPath != null ? httpPath : ""; String fullPath; if (finalClassRoute != null) { - fullPath = "/" + finalClassRoute.replaceAll("(^/+|/+$)", ""); + fullPath = "/" + finalClassRoute.replaceAll("(^/+)|(/+$)", ""); if (!path.isEmpty()) fullPath = fullPath + "/" + path.replaceAll("^/+", ""); } else { fullPath = !path.isEmpty() ? "/" + path.replaceAll("^/+", "") : "/"; diff --git a/src/main/java/io/github/randomcodespace/iq/detector/java/GrpcServiceDetector.java b/src/main/java/io/github/randomcodespace/iq/detector/java/GrpcServiceDetector.java index d73ff670..2d430189 100644 --- a/src/main/java/io/github/randomcodespace/iq/detector/java/GrpcServiceDetector.java +++ b/src/main/java/io/github/randomcodespace/iq/detector/java/GrpcServiceDetector.java @@ -33,7 +33,7 @@ public class GrpcServiceDetector extends AbstractRegexDetector { private static final Pattern GRPC_IMPL_RE = Pattern.compile( "class\\s+(\\w+)\\s+extends\\s+(\\w+)Grpc\\.(\\w+)ImplBase"); private static final Pattern METHOD_RE = Pattern.compile( - "public\\s+(?:void|[\\w<>\\[\\]]+)\\s+(\\w+)\\s*\\(\\s*(\\w+)"); + "public\\s+[\\w<>\\[\\]]+\\s+(\\w+)\\s*\\(\\s*(\\w+)"); private static final Pattern GRPC_STUB_RE = Pattern.compile( "(\\w+)Grpc\\.new(?:Blocking|Future)?Stub\\s*\\("); diff --git a/src/main/java/io/github/randomcodespace/iq/detector/java/JpaEntityDetector.java b/src/main/java/io/github/randomcodespace/iq/detector/java/JpaEntityDetector.java index c6b2c8fa..e5c76da9 100644 --- a/src/main/java/io/github/randomcodespace/iq/detector/java/JpaEntityDetector.java +++ b/src/main/java/io/github/randomcodespace/iq/detector/java/JpaEntityDetector.java @@ -197,8 +197,9 @@ private String resolveTargetEntity(AnnotationExpr ann, FieldDeclaration field) { Type type = var.getType(); if (!type.isClassOrInterfaceType()) continue; ClassOrInterfaceType cit = type.asClassOrInterfaceType(); - if (cit.getTypeArguments().isPresent()) { - var typeArgs = cit.getTypeArguments().get(); + var typeArgsOpt = cit.getTypeArguments(); + if (typeArgsOpt.isPresent()) { + var typeArgs = typeArgsOpt.get(); if (!typeArgs.isEmpty()) return typeArgs.get(0).asString(); } else { return cit.getNameAsString(); diff --git a/src/main/java/io/github/randomcodespace/iq/detector/java/RawSqlDetector.java b/src/main/java/io/github/randomcodespace/iq/detector/java/RawSqlDetector.java index 1d4e48fd..4e19e79a 100644 --- a/src/main/java/io/github/randomcodespace/iq/detector/java/RawSqlDetector.java +++ b/src/main/java/io/github/randomcodespace/iq/detector/java/RawSqlDetector.java @@ -27,14 +27,14 @@ public class RawSqlDetector extends AbstractRegexDetector { private static final Pattern CLASS_RE = Pattern.compile("(?:public\\s+)?class\\s+(\\w+)"); private static final Pattern QUERY_ANNO_RE = Pattern.compile( - "@Query\\s*\\(\\s*(?:value\\s*=\\s*)?\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\"", Pattern.DOTALL); + "@Query\\s*\\(\\s*(?:value\\s*=\\s*)?\"([^\"\\\\]*+(?:\\\\.[^\"\\\\]*+)*+)\"", Pattern.DOTALL); private static final Pattern NATIVE_QUERY_RE = Pattern.compile("nativeQuery\\s*=\\s*true"); private static final Pattern JDBC_TEMPLATE_RE = Pattern.compile( "(?:jdbcTemplate|namedParameterJdbcTemplate|JdbcTemplate)\\s*\\." + "(?:query|queryForObject|queryForList|queryForMap|update|execute|batchUpdate)" - + "\\s*\\(\\s*\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\"", Pattern.DOTALL); + + "\\s*\\(\\s*\"([^\"\\\\]*+(?:\\\\.[^\"\\\\]*+)*+)\"", Pattern.DOTALL); private static final Pattern EM_QUERY_RE = Pattern.compile( - "(?:entityManager|em)\\s*\\.(?:createNativeQuery|createQuery)\\s*\\(\\s*\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\"", + "(?:entityManager|em)\\s*\\.(?:createNativeQuery|createQuery)\\s*\\(\\s*\"([^\"\\\\]*+(?:\\\\.[^\"\\\\]*+)*+)\"", Pattern.DOTALL); private static final Pattern TABLE_REF_RE = Pattern.compile( "\\b(?:FROM|JOIN|INTO|UPDATE|TABLE)\\s+(\\w+)", Pattern.CASE_INSENSITIVE); diff --git a/src/main/java/io/github/randomcodespace/iq/detector/typescript/NestJSControllerDetector.java b/src/main/java/io/github/randomcodespace/iq/detector/typescript/NestJSControllerDetector.java index 155dc8cb..43f92c93 100644 --- a/src/main/java/io/github/randomcodespace/iq/detector/typescript/NestJSControllerDetector.java +++ b/src/main/java/io/github/randomcodespace/iq/detector/typescript/NestJSControllerDetector.java @@ -41,11 +41,11 @@ public class NestJSControllerDetector extends AbstractAntlrDetector { private static final Pattern NESTJS_IMPORT = Pattern.compile("from\\s+['\"]@nestjs/"); private static final Pattern CONTROLLER_PATTERN = Pattern.compile( - "@Controller\\(\\s*['\"`]?([^'\"`\\)\\s]*)['\"`]?\\s*\\)(?:\\s*@\\w+\\([^)]{0,200}\\))*\\s*\\n\\s*(?:export\\s+)?class\\s+(\\w+)" + "@Controller\\(\\s*['\"`]?([^'\"`\\)\\s]*)['\"`]?\\s*\\)(?:\\s*+@\\w+\\([^)]{0,200}\\))*+\\s*\\n\\s*(?:export\\s+)?class\\s+(\\w+)" ); private static final Pattern ROUTE_PATTERN = Pattern.compile( - "@(Get|Post|Put|Delete|Patch|Options|Head)\\(\\s*['\"`]?([^'\"`\\)\\s]*)['\"`]?\\s*\\)(?:\\s*@\\w+\\([^)]{0,200}\\))*\\s*\\n\\s*(?:async\\s+)?(\\w+)" + "@(Get|Post|Put|Delete|Patch|Options|Head)\\(\\s*['\"`]?([^'\"`\\)\\s]*)['\"`]?\\s*\\)(?:\\s*+@\\w+\\([^)]{0,200}\\))*+\\s*\\n\\s*(?:async\\s+)?(\\w+)" ); @Override