Expand neverallow for sdk_version: none
Allow the platform stubs to specify sdk_version: none, and add generic support for a regexp matcher. Bug: 144149403 Test: m Change-Id: Icaece0d9797bace8ae9741f7a029b9ea57fcbbb9
This commit is contained in:
parent
0d4b9e32d0
commit
453764070d
|
@ -17,6 +17,7 @@ package android
|
|||
import (
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
|
@ -147,7 +148,8 @@ func createLibcoreRules() []Rule {
|
|||
rules := []Rule{
|
||||
NeverAllow().
|
||||
NotIn(coreLibraryProjects...).
|
||||
With("sdk_version", "none"),
|
||||
With("sdk_version", "none").
|
||||
WithoutMatcher("name", Regexp("^android_.*stubs_current$")),
|
||||
}
|
||||
|
||||
return rules
|
||||
|
@ -286,6 +288,18 @@ func (m *startsWithMatcher) String() string {
|
|||
return ".starts-with(" + m.prefix + ")"
|
||||
}
|
||||
|
||||
type regexMatcher struct {
|
||||
re *regexp.Regexp
|
||||
}
|
||||
|
||||
func (m *regexMatcher) test(value string) bool {
|
||||
return m.re.MatchString(value)
|
||||
}
|
||||
|
||||
func (m *regexMatcher) String() string {
|
||||
return ".regexp(" + m.re.String() + ")"
|
||||
}
|
||||
|
||||
type isSetMatcher struct{}
|
||||
|
||||
func (m *isSetMatcher) test(value string) bool {
|
||||
|
@ -501,6 +515,14 @@ func StartsWith(prefix string) ValueMatcher {
|
|||
return &startsWithMatcher{prefix}
|
||||
}
|
||||
|
||||
func Regexp(re string) ValueMatcher {
|
||||
r, err := regexp.Compile(re)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return ®exMatcher{r}
|
||||
}
|
||||
|
||||
// assorted utils
|
||||
|
||||
func cleanPaths(paths []string) []string {
|
||||
|
|
|
@ -226,6 +226,16 @@ var neverallowTests = []struct {
|
|||
}`),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "sdk_version: \"none\" on android_*stubs_current stub",
|
||||
fs: map[string][]byte{
|
||||
"frameworks/base/Android.bp": []byte(`
|
||||
java_library {
|
||||
name: "android_stubs_current",
|
||||
sdk_version: "none",
|
||||
}`),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "sdk_version: \"none\" outside core libraries",
|
||||
fs: map[string][]byte{
|
||||
|
|
Loading…
Reference in New Issue