我正在尝试为PHP CodeSniffer设置一个规则集,以便在一组开发人员中强制执行代码风格,但我遇到了一些麻烦.
除了关于两件事之外,我们想要坚持PSR-2.我们希望类声明在同一行上具有开括号,对于函数也是如此.第一个我已经设法修复,但功能的同一行上的开括号的错误不会消失.
我已经跟踪了它的嗅觉Generic.Functions.OpeningFunctionBrace.BsdAllman和错误BraceOnSameLine但是将这个排除添加到我的规则集什么也没做.
我的规则集如下所示:
<?xml version="1.0"?>
<ruleset name="OrgXYZ">
<description>The coding standard for Organization XYZ.</description>
<rule ref="PSR2">
<exclude name="PSR2.Classes.ClassDeclaration.OpenBraceNewLine"/>
<exclude name="Generic.Functions.OpeningFunctionBraceBsdAllman.BraceOnSameLine"/>
</rule>
</ruleset>
Run Code Online (Sandbox Code Playgroud)
我试图从报告中删除的消息是这样的:
15 | ERROR | Opening brace should be on a new line
Run Code Online (Sandbox Code Playgroud)
这是我对自己的规则集的第一次尝试,我在这里真的很茫然.我用Google搜索,搜索并尝试了一切.
我有一个包含三个资源的 REST-API。第一个中的方法称为 PublicResource,任何人都应该可以访问(即匿名访问)。第二个方法中的方法称为 SecretResource,应该只能由特定的用户组访问。最后,称为 MixedResource 的第三个资源具有混合设置,其中一些方法受到保护,一些方法对公共访问开放。
注释@PermitAll 和@RolesAllowed 并不像我期望的那样工作。尽管 PublicResource 用 @PermitAll 进行了注释,但我在尝试访问它时仍然会被要求授权。MixedResource 中用@PermitAll 注释的方法也是如此。所以基本上,我的所有资源都被要求授权,即使我应该匿名访问。
我在 Payara 4.1 上运行,我很困惑,因为我在另一个运行在 WebLogic 12.1.3 上的应用程序中进行了非常相似的设置,并且注释按预期工作。我错过了什么或弄错了什么?在下面查看我的完整代码。
公共资源.java:
import javax.annotation.security.PermitAll;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("public")
@PermitAll
public class PublicResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String itsPublic() {
return "public";
}
}
Run Code Online (Sandbox Code Playgroud)
秘密资源.java:
import javax.annotation.security.RolesAllowed;
import javax.ws.rs.GET;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("secret")
@RolesAllowed({ "SECRET" })
public class SecretResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String itsSecret() {
return "secret";
}
}
Run Code Online (Sandbox Code Playgroud)
混合资源.java:
import …Run Code Online (Sandbox Code Playgroud)