1 ///////////////////////////////////////////////////////////////////////////////////////////////
2 // checkstyle: Checks Java source code and other text files for adherence to a set of rules.
3 // Copyright (C) 2001-2025 the original author or authors.
4 //
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 ///////////////////////////////////////////////////////////////////////////////////////////////
19
20 package com.puppycrawl.tools.checkstyle;
21
22 import java.lang.annotation.ElementType;
23 import java.lang.annotation.Inherited;
24 import java.lang.annotation.Retention;
25 import java.lang.annotation.RetentionPolicy;
26 import java.lang.annotation.Target;
27
28 /**
29 * This annotation means that the check contains global context,
30 * which will be updated while Checkstyle processes files. This also means,
31 * that all files will be processed by the same check instance.
32 * This annotation should be used, if a check accumulates some information during the audit,
33 * and processed only once at the end of the audit (however, the check still
34 * can produce some messages, while collecting information).
35 * The check methods and fields should be thread safe, because they may be accessed from others
36 * threads at the same time.
37 * Checker guarantees that there will be exactly one check instance
38 * This is similar to multi-file validation, which checkstyle does not support fully yet.
39 * Please refer to <a href="https://github.com/checkstyle/checkstyle/issues/3540">#3540</a>
40 * for details.
41 *
42 * @noinspection ClassIndependentOfModule, ClassOnlyUsedInOnePackage
43 * @noinspectionreason ClassIndependentOfModule - we keep this annotation at top level by design
44 * @noinspectionreason ClassOnlyUsedInOnePackage - checks live in one package by design
45 */
46 @Inherited
47 @Retention(RetentionPolicy.RUNTIME)
48 @Target(ElementType.TYPE)
49 public @interface GlobalStatefulCheck {
50
51 // this annotation does not have properties
52
53 }