Skip to content

Commit 6b3160c

Browse files
committed
Add shouldStepOut in StepFilterProvider
1 parent b39d1c0 commit 6b3160c

8 files changed

Lines changed: 359 additions & 31 deletions

File tree

Lines changed: 303 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,303 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE module PUBLIC
3+
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4+
"http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">
5+
6+
<!--
7+
Checkstyle configuration that checks the Google coding conventions from Google Java Style
8+
that can be found at https://google.github.io/styleguide/javaguide.html.
9+
10+
Checkstyle is very configurable. Be sure to read the documentation at
11+
http://checkstyle.sf.net (or in your downloaded distribution).
12+
13+
To completely disable a check, just comment it out or delete it from the file.
14+
15+
Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
16+
-->
17+
18+
<module name="Checker">
19+
<property name="charset" value="UTF-8"/>
20+
21+
<property name="fileExtensions" value="java, properties, xml"/>
22+
<module name="RegexpHeader">
23+
<property name="headerFile" value="microsoft.header"/>
24+
</module>
25+
<!-- Checks for whitespace
26+
See http://checkstyle.sf.net/config_whitespace.html -->
27+
<module name="FileTabCharacter">
28+
<property name="eachLine" value="true"/>
29+
</module>
30+
31+
<!-- No trailing spaces allowed -->
32+
<module name="RegexpSingleline">
33+
<property name="format" value="\s+$"/>
34+
<property name="message" value="Line has trailing spaces."/>
35+
</module>
36+
37+
<!-- CRLF is not allowed -->
38+
<module name="RegexpMultiline">
39+
<property name="format" value="(?s:(\r\n|\r).*)"/>
40+
<property name="message" value="CRLF and CR line endings are prohibited, but this file uses them."/>
41+
</module>
42+
43+
<module name="LineLengthCheck">
44+
<property name="fileExtensions" value="java" />
45+
<!-- Checks if a line is too long. -->
46+
<property name="max" value="${com.puppycrawl.tools.checkstyle.checks.sizes.LineLength.max}" default="160"/>
47+
<property name="severity" value="error"/>
48+
49+
<!--
50+
The default ignore pattern exempts the following elements:
51+
- import statements
52+
- long URLs inside comments
53+
-->
54+
55+
<property name="ignorePattern"
56+
value="${com.puppycrawl.tools.checkstyle.checks.sizes.LineLength.ignorePattern}"
57+
default="^(package .*;\s*)|(import .*;\s*)|( *\* *https?://.*)$"/>
58+
</module>
59+
60+
<module name="TreeWalker">
61+
<!-- Default CheckStyle Whitespace rules seem reasonable to use. -->
62+
<module name="EmptyForIteratorPad"/>
63+
<module name="MethodParamPad"/>
64+
<module name="NoWhitespaceAfter"/>
65+
<module name="NoWhitespaceBefore"/>
66+
<module name="OperatorWrap"/>
67+
<module name="ParenPad"/>
68+
<module name="TypecastParenPad"/>
69+
<module name="WhitespaceAfter"/>
70+
<module name="WhitespaceAround"/>
71+
72+
<!-- Modifier Order as specified by Java Language Specifications. -->
73+
<module name="ModifierOrder"/>
74+
75+
<!-- Empty blocks allowed, as long as they have explicit comments stating why they are empty. -->
76+
<module name="EmptyBlock">
77+
<property name="option" value="text"/>
78+
</module>
79+
80+
81+
<module name="LeftCurly"/>
82+
<module name="NeedBraces"/>
83+
<module name="RightCurly"/>
84+
85+
<!-- Added some coding problems as INFO. Up to developer to react to them. -->
86+
<module name="CovariantEquals">
87+
<property name="severity" value="info"/>
88+
</module>
89+
<!-- Only apply this to local variables; Designers seem to prefer using same parameter names as class members. -->
90+
<module name="HiddenField">
91+
<property name="tokens" value="VARIABLE_DEF"/>
92+
</module>
93+
94+
<!-- No multiple assignement in a single line. -->
95+
<module name="InnerAssignment"/>
96+
<module name="RedundantImport" />
97+
<module name="UnusedImports"/>
98+
99+
<module name="OuterTypeFilename"/>
100+
<module name="IllegalTokenText">
101+
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
102+
<property name="format"
103+
value="\\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
104+
<property name="message"
105+
value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
106+
</module>
107+
<module name="AvoidEscapedUnicodeCharacters">
108+
<property name="allowEscapesForControlCharacters" value="true"/>
109+
<property name="allowByTailComment" value="true"/>
110+
<property name="allowNonPrintableEscapes" value="true"/>
111+
</module>
112+
<module name="AvoidStarImport"/>
113+
<module name="OneTopLevelClass"/>
114+
<module name="NoLineWrap"/>
115+
<module name="EmptyBlock">
116+
<property name="option" value="TEXT"/>
117+
<property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
118+
</module>
119+
<module name="NeedBraces"/>
120+
<module name="RightCurly">
121+
<property name="id" value="RightCurlySame"/>
122+
<property name="tokens"
123+
value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_DO"/>
124+
</module>
125+
<module name="RightCurly">
126+
<property name="id" value="RightCurlyAlone"/>
127+
<property name="option" value="alone"/>
128+
<property name="tokens"
129+
value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT, INSTANCE_INIT"/>
130+
</module>
131+
<module name="WhitespaceAround">
132+
<property name="allowEmptyConstructors" value="true"/>
133+
<property name="allowEmptyMethods" value="true"/>
134+
<property name="allowEmptyTypes" value="true"/>
135+
<property name="allowEmptyLoops" value="true"/>
136+
<message key="ws.notFollowed"
137+
value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
138+
<message key="ws.notPreceded"
139+
value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
140+
</module>
141+
<module name="OneStatementPerLine"/>
142+
<module name="MultipleVariableDeclarations"/>
143+
<module name="ArrayTypeStyle"/>
144+
<module name="MissingSwitchDefault"/>
145+
<module name="FallThrough"/>
146+
<module name="UpperEll"/>
147+
<module name="ModifierOrder"/>
148+
<module name="EmptyLineSeparator">
149+
<property name="allowNoEmptyLineBetweenFields" value="true"/>
150+
<property name="allowMultipleEmptyLines" value="false"/>
151+
<property name="allowMultipleEmptyLinesInsideClassMembers" value="false"/>
152+
<property name="tokens" value="VARIABLE_DEF, METHOD_DEF"/>
153+
</module>
154+
<module name="SeparatorWrap">
155+
<property name="id" value="SeparatorWrapDot"/>
156+
<property name="tokens" value="DOT"/>
157+
<property name="option" value="nl"/>
158+
</module>
159+
<module name="SeparatorWrap">
160+
<property name="id" value="SeparatorWrapComma"/>
161+
<property name="tokens" value="COMMA"/>
162+
<property name="option" value="EOL"/>
163+
</module>
164+
<module name="SeparatorWrap">
165+
<property name="id" value="SeparatorWrapMethodRef"/>
166+
<property name="tokens" value="METHOD_REF"/>
167+
<property name="option" value="nl"/>
168+
</module>
169+
<module name="PackageName">
170+
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
171+
<message key="name.invalidPattern"
172+
value="Package name ''{0}'' must match pattern ''{1}''."/>
173+
</module>
174+
<module name="TypeName">
175+
<message key="name.invalidPattern"
176+
value="Type name ''{0}'' must match pattern ''{1}''."/>
177+
</module>
178+
<module name="MemberName">
179+
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
180+
<message key="name.invalidPattern"
181+
value="Member name ''{0}'' must match pattern ''{1}''."/>
182+
</module>
183+
<module name="ParameterName">
184+
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
185+
<message key="name.invalidPattern"
186+
value="Parameter name ''{0}'' must match pattern ''{1}''."/>
187+
</module>
188+
<module name="CatchParameterName">
189+
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
190+
<message key="name.invalidPattern"
191+
value="Catch parameter name ''{0}'' must match pattern ''{1}''."/>
192+
</module>
193+
<module name="LocalVariableName">
194+
<property name="tokens" value="VARIABLE_DEF"/>
195+
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
196+
<message key="name.invalidPattern"
197+
value="Local variable name ''{0}'' must match pattern ''{1}''."/>
198+
</module>
199+
<module name="ClassTypeParameterName">
200+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
201+
<message key="name.invalidPattern"
202+
value="Class type name ''{0}'' must match pattern ''{1}''."/>
203+
</module>
204+
<module name="MethodTypeParameterName">
205+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
206+
<message key="name.invalidPattern"
207+
value="Method type name ''{0}'' must match pattern ''{1}''."/>
208+
</module>
209+
<module name="InterfaceTypeParameterName">
210+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
211+
<message key="name.invalidPattern"
212+
value="Interface type name ''{0}'' must match pattern ''{1}''."/>
213+
</module>
214+
<module name="NoFinalizer"/>
215+
<module name="GenericWhitespace">
216+
<message key="ws.followed"
217+
value="GenericWhitespace ''{0}'' is followed by whitespace."/>
218+
<message key="ws.preceded"
219+
value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
220+
<message key="ws.illegalFollow"
221+
value="GenericWhitespace ''{0}'' should followed by whitespace."/>
222+
<message key="ws.notPreceded"
223+
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
224+
</module>
225+
<module name="Indentation">
226+
<property name="basicOffset" value="4"/>
227+
<property name="braceAdjustment" value="0"/>
228+
<property name="caseIndent" value="4"/>
229+
<property name="throwsIndent" value="4"/>
230+
<property name="lineWrappingIndentation" value="4"/>
231+
<property name="arrayInitIndent" value="4"/>
232+
</module>
233+
<module name="OverloadMethodsDeclarationOrder"/>
234+
<module name="VariableDeclarationUsageDistance"/>
235+
<module name="CustomImportOrder">
236+
<property name="customImportOrderRules"
237+
value="STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE"/>
238+
<property name="specialImportsRegExp" value="^org\."/>
239+
<property name="thirdPartyPackageRegExp" value="^com\."/>
240+
<property name="sortImportsInGroupAlphabetically" value="true"/>
241+
<property name="separateLineBetweenGroups" value="true"/>
242+
<property name="severity" value="info"/>
243+
</module>
244+
<module name="MethodParamPad"/>
245+
<module name="ParenPad"/>
246+
<module name="OperatorWrap">
247+
<property name="option" value="NL"/>
248+
<property name="tokens"
249+
value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF "/>
250+
</module>
251+
<module name="AnnotationLocation">
252+
<property name="id" value="AnnotationLocationMostCases"/>
253+
<property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
254+
</module>
255+
<module name="AnnotationLocation">
256+
<property name="id" value="AnnotationLocationVariables"/>
257+
<property name="tokens" value="VARIABLE_DEF"/>
258+
<property name="allowSamelineMultipleAnnotations" value="true"/>
259+
</module>
260+
<module name="NonEmptyAtclauseDescription"/>
261+
<module name="JavadocTagContinuationIndentation"/>
262+
<module name="SummaryJavadoc">
263+
<property name="forbiddenSummaryFragments"
264+
value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
265+
</module>
266+
<!-- <module name="JavadocParagraph"/> -->
267+
<module name="AtclauseOrder">
268+
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
269+
<property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
270+
</module>
271+
<module name="JavadocMethod">
272+
<property name="scope" value="public"/>
273+
<property name="allowMissingParamTags" value="true"/>
274+
<property name="allowMissingReturnTag" value="true"/>
275+
<property name="allowedAnnotations" value="Override, Test"/>
276+
</module>
277+
<module name="MethodName">
278+
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
279+
<message key="name.invalidPattern"
280+
value="Method name ''{0}'' must match pattern ''{1}''."/>
281+
</module>
282+
<module name="SingleLineJavadoc">
283+
<property name="ignoreInlineTags" value="false"/>
284+
</module>
285+
<module name="EmptyCatchBlock">
286+
<property name="exceptionVariableName" value="expected"/>
287+
</module>
288+
<module name="CommentsIndentation"/>
289+
<module name="EmptyStatement"/>
290+
<module name="StringLiteralEquality"/>
291+
<!-- Developer should probably bring up this issue with designer if ever it occurs. -->
292+
<module name="EqualsHashCode">
293+
<property name="severity" value="info" />
294+
</module>
295+
<!-- Only apply this to local variables; Designers seem to prefer using same parameter names as class members. -->
296+
<module name="HiddenField">
297+
<property name="tokens" value="VARIABLE_DEF"/>
298+
</module>
299+
300+
<module name="SimplifyBooleanExpression"/>
301+
<module name="SimplifyBooleanReturn"/>
302+
</module>
303+
</module>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
^/\*+$
2+
^\s*\* Copyright \(c\) \d\d\d\d.*$

com.microsoft.java.debug.core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<name>${base.name} :: Debugger Core</name>
99
<description>The Java Debug Server is an implementation of Visual Studio Code (VSCode) Debug Protocol. It can be used in Visual Studio Code to debug Java programs.</description>
1010
<url>https://github.com/scalacenter/java-debug</url>
11-
<version>0.34.0+4</version>
11+
<version>0.34.0+5-SNAPSHOT</version>
1212
<properties>
1313
<base.name>Java Debug Server for Visual Studio Code</base.name>
1414
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/IStepFilterProvider.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@
1212
package com.microsoft.java.debug.core.adapter;
1313

1414
import com.microsoft.java.debug.core.protocol.Requests;
15+
import com.sun.jdi.Location;
1516
import com.sun.jdi.Method;
1617

1718
public interface IStepFilterProvider extends IProvider {
18-
boolean skip(Method method, Requests.StepFilters filters);
19+
boolean shouldStepInto(Method method, Requests.StepFilters filters);
20+
21+
boolean shouldStepOut(Location previousLocation, Method method);
1922
}

com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/StepFilterProvider.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@
1212
package com.microsoft.java.debug.core.adapter;
1313

1414
import com.microsoft.java.debug.core.protocol.Requests;
15+
import com.sun.jdi.Location;
1516
import com.sun.jdi.Method;
1617
import org.apache.commons.lang3.ArrayUtils;
1718

1819
public class StepFilterProvider implements IStepFilterProvider {
1920
@Override
20-
public boolean skip(Method method, Requests.StepFilters filters) {
21+
public boolean shouldStepInto(Method method, Requests.StepFilters filters) {
2122
if (!isConfigured(filters)) {
2223
return false;
2324
}
@@ -26,6 +27,11 @@ public boolean skip(Method method, Requests.StepFilters filters) {
2627
|| (filters.skipConstructors && method.isConstructor());
2728
}
2829

30+
@Override
31+
public boolean shouldStepOut(Location previousLocation, Method method) {
32+
return false;
33+
}
34+
2935
private boolean isConfigured(Requests.StepFilters filters) {
3036
if (filters == null) {
3137
return false;

0 commit comments

Comments
 (0)