forked from checkstyle/checkstyle
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Issue checkstyle#4883: Add MT check markers
- Loading branch information
Showing
5 changed files
with
155 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
52 changes: 52 additions & 0 deletions
52
src/main/java/com/puppycrawl/tools/checkstyle/FileStatefulCheck.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
//////////////////////////////////////////////////////////////////////////////// | ||
// checkstyle: Checks Java source code for adherence to a set of rules. | ||
// Copyright (C) 2001-2017 the original author or authors. | ||
// | ||
// This library is free software; you can redistribute it and/or | ||
// modify it under the terms of the GNU Lesser General Public | ||
// License as published by the Free Software Foundation; either | ||
// version 2.1 of the License, or (at your option) any later version. | ||
// | ||
// This library is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
// Lesser General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU Lesser General Public | ||
// License along with this library; if not, write to the Free Software | ||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
//////////////////////////////////////////////////////////////////////////////// | ||
|
||
package com.puppycrawl.tools.checkstyle; | ||
|
||
import java.lang.annotation.ElementType; | ||
import java.lang.annotation.Inherited; | ||
import java.lang.annotation.Retention; | ||
import java.lang.annotation.RetentionPolicy; | ||
import java.lang.annotation.Target; | ||
|
||
/** | ||
* This annotation means that the check contains file-related context and therefore | ||
* cannot be used from the others threads at the same time. | ||
* This annotation should be used when the check holds a thread-unsafe state. | ||
* Checker guarantees that the whole file processed inside the same thread. | ||
* Checker guarantees that the whole file processed with the same check instance. | ||
* Checker guarantees that each check instance processes only one file at the same time. | ||
* Checker guarantees that all check instances have equal (but not the same) configuration. | ||
* It means, that if a check holds a property of type "array of strings", | ||
* the property value will not be shared accross check instances. | ||
* Instead, each check instance will hold its own array instance. | ||
* Checker does not guarantee that each file will have it's own thread - | ||
* there might be a list of files, which will be executed on the same thread. | ||
* Checker does not guarantee that each file will have it's own check instance - | ||
* there might be a list of files, which will be checked by the same instance. | ||
* Note: Checks with such annotation will be executed in mode how all Checks worked | ||
* before MT mode is introduced. | ||
* @author Andrew Kuchev | ||
* @noinspection ClassIndependentOfModule, unused, AnnotationClass | ||
*/ | ||
@Retention(RetentionPolicy.RUNTIME) | ||
@Target(ElementType.TYPE) | ||
@Inherited | ||
public @interface FileStatefulCheck { | ||
} |
47 changes: 47 additions & 0 deletions
47
src/main/java/com/puppycrawl/tools/checkstyle/GlobalStatefulCheck.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
//////////////////////////////////////////////////////////////////////////////// | ||
// checkstyle: Checks Java source code for adherence to a set of rules. | ||
// Copyright (C) 2001-2017 the original author or authors. | ||
// | ||
// This library is free software; you can redistribute it and/or | ||
// modify it under the terms of the GNU Lesser General Public | ||
// License as published by the Free Software Foundation; either | ||
// version 2.1 of the License, or (at your option) any later version. | ||
// | ||
// This library is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
// Lesser General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU Lesser General Public | ||
// License along with this library; if not, write to the Free Software | ||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
//////////////////////////////////////////////////////////////////////////////// | ||
|
||
package com.puppycrawl.tools.checkstyle; | ||
|
||
import java.lang.annotation.ElementType; | ||
import java.lang.annotation.Inherited; | ||
import java.lang.annotation.Retention; | ||
import java.lang.annotation.RetentionPolicy; | ||
import java.lang.annotation.Target; | ||
|
||
/** | ||
* This annotation means that the check contains global context, | ||
* which will be updated while Checkstyle processes files. This also means, | ||
* that all files will be processed by the same check instance. | ||
* This annotation should be used, if a check accumulates some information during the audit, | ||
* and processed only once at the end of the audit (however, the check still | ||
* can produce some messages, while collecting information). | ||
* The check methods and fields should be thread safe, because they may be accessed from others | ||
* threads at the same time. | ||
* Checker guarantees that there will be exactly one check instance | ||
* This is simular to multi-file validation, which checkstyle does not support fully yet. | ||
* Please refer to https://github.com/checkstyle/checkstyle/issues/3540 for details. | ||
* @author Andrew Kuchev | ||
* @noinspection ClassIndependentOfModule, unused, AnnotationClass | ||
*/ | ||
@Retention(RetentionPolicy.RUNTIME) | ||
@Target(ElementType.TYPE) | ||
@Inherited | ||
public @interface GlobalStatefulCheck { | ||
} |
45 changes: 45 additions & 0 deletions
45
src/main/java/com/puppycrawl/tools/checkstyle/StatelessCheck.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
//////////////////////////////////////////////////////////////////////////////// | ||
// checkstyle: Checks Java source code for adherence to a set of rules. | ||
// Copyright (C) 2001-2017 the original author or authors. | ||
// | ||
// This library is free software; you can redistribute it and/or | ||
// modify it under the terms of the GNU Lesser General Public | ||
// License as published by the Free Software Foundation; either | ||
// version 2.1 of the License, or (at your option) any later version. | ||
// | ||
// This library is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
// Lesser General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU Lesser General Public | ||
// License along with this library; if not, write to the Free Software | ||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
//////////////////////////////////////////////////////////////////////////////// | ||
|
||
package com.puppycrawl.tools.checkstyle; | ||
|
||
import java.lang.annotation.ElementType; | ||
import java.lang.annotation.Inherited; | ||
import java.lang.annotation.Retention; | ||
import java.lang.annotation.RetentionPolicy; | ||
import java.lang.annotation.Target; | ||
|
||
/** | ||
* This annotation means that the check does not contain mutable state and | ||
* may be safely used from others threads at the same time. | ||
* The check does not contain mutable state, if it does not change any field values at the | ||
* execution stage (but it still can set properties at the initialization stage). | ||
* Note: The best practice is to use final fields where possible and carefully review | ||
* all mutable fields. A final list is still mutable, therefore each mutable container | ||
* must also be carefully reviewed. | ||
* Checker guarantees that there will be exactly one check instance during the audit. | ||
* This also means, that all files will be processed by the same check instance. | ||
* @author Andrew Kuchev | ||
* @noinspection ClassIndependentOfModule, unused, AnnotationClass | ||
*/ | ||
@Retention(RetentionPolicy.RUNTIME) | ||
@Target(ElementType.TYPE) | ||
@Inherited | ||
public @interface StatelessCheck { | ||
} |