gpt4 book ai didi

android-studio - Android Checkstyle-调试自定义检查

转载 作者:行者123 更新时间:2023-12-03 05:55:00 24 4
gpt4 key购买 nike

我想为Checkstyle 8.1编写自定义检查。我成功安装并配置了Gradle Checkstyle,并编写了支票的草图。但是当我尝试运行支票时-我遇到了错误

Execution failed for task ':app:checkstyle'.
> Unable to process files: FILE1, FILE2 ...

这是我的支票代码
package com.lsurvila.checkstyle;
import com.puppycrawl.tools.checkstyle.api.*;

import javax.xml.ws.LogicalMessage;

public class LinesAfterClassJavadocCheck extends AbstractCheck
{
private static final int DEFAULT_MAX = 30;
private int max = DEFAULT_MAX;

/**
* Returns the default token a check is interested in. Only used if the
* configuration for a check does not define the tokens.
*
* @return the default tokens
* @see TokenTypes
*/
@Override
public int[] getDefaultTokens() {
return new int[]{TokenTypes.CLASS_DEF, TokenTypes.INTERFACE_DEF};
}

/**
* The configurable token set.
* Used to protect Checks against malicious users who specify an
* unacceptable token set in the configuration file.
* The default implementation returns the check's default tokens.
*
* @return the token set this check is designed for.
* @see TokenTypes
*/
@Override
public int[] getAcceptableTokens() {
return new int[0];
}

/**
* The tokens that this check must be registered for.
*
* @return the token set this must be registered for.
* @see TokenTypes
*/
@Override
public int[] getRequiredTokens() {
return new int[0];
}

@Override
public void visitToken(DetailAST ast)
{
//throw new IllegalArgumentException("SUKA BLEAT");
DetailAST objBlock1 = ast.findFirstToken(TokenTypes.LITERAL_CLASS);
if (objBlock1 == null) {
log(ast.getLineNo(), "PIDOR");
//System.out.print("PIDOR");
}

String a = getLine(objBlock1.getLineNo()-1);
log(1,a);
//System.out.print(a);
if (a.isEmpty()) {
log(ast.getLineNo(), "PIDOR1");
}

/*DetailAST objBlock2 = ast.findFirstToken(TokenTypes.MODIFIERS).findFirstToken(TokenTypes.BLOCK_COMMENT_BEGIN);
if (objBlock2 == null) {
log(ast.getLineNo(), "PIDOR1");
//System.out.print("PIDOR");
}*/

/*DetailAST objBlock2 = ast.findFirstToken(TokenTypes.LITERAL_CLASS);

DetailAST objBlock3 = objBlock1.findFirstToken(TokenTypes.MODIFIERS).findFirstToken(TokenTypes.BLOCK_COMMENT_BEGIN).findFirstToken(TokenTypes.BLOCK_COMMENT_END);




if (objBlock3.getLine()+2 != objBlock2.getLine()) {
log(ast.getLineNo(), "PIDOR");
}*/
}
}

我发现log()方法会产生此异常。我没有找到另一种方法来查看代码中正在发生的事情,即使System.out.print()也不显示任何内容。如何运行自定义检查附带的调试器?由于我的检查在编译应用程序之前已开始,因此情况变得很复杂。

以下是如何检查我的应用程序项目中的支票的屏幕截图:
enter image description here

请为我的英语不好对不起

最佳答案

我建议使用Command line interface查看Checkstyle的原始输出和错误。我不特别知道gradle如何处理这些情况,但是System.out应该可以在CLI中工作。如果仍然没有输出,则可能是甚至没有调用visitToken

我还建议您使用-t选项查看文件的AST树,以验证您是否获取了用于检查的正确 token 。

    return new int[0];


这是错误的,您必须返回 Acceptable的 token ,否则您说支票不接受任何内容。更改它以返回 getDefaultTokens

我建议您从 their google group form获得该小组的帮助。

关于android-studio - Android Checkstyle-调试自定义检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45407815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com