blob: 061c3d0069f306a26fbfbe4bd45ca3cfbedcd516 [file] [log] [blame]
# This package contains functions and classes for analyzing text structures.
load("//bazel:flex.bzl", "genlex")
package(
default_applicable_licenses = ["//:license"],
default_visibility = [
"//verilog/CST:__subpackages__",
"//verilog/analysis:__subpackages__",
"//verilog/tools/kythe:__pkg__",
"//verilog/tools/lint:__subpackages__",
],
)
cc_library(
name = "citation",
srcs = ["citation.cc"],
hdrs = ["citation.h"],
deps = [
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "lint-rule-status",
srcs = ["lint_rule_status.cc"],
hdrs = ["lint_rule_status.h"],
deps = [
":citation",
"//common/strings:line-column-map",
"//common/text:concrete-syntax-leaf",
"//common/text:symbol",
"//common/text:syntax-tree-context",
"//common/text:token-info",
"//common/text:tree-utils",
"//common/util:logging",
"//common/util:spacer",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "lint-rule",
hdrs = ["lint_rule.h"],
deps = [
":lint-rule-status",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
genlex(
name = "command-file-lex",
src = "command_file.lex",
out = "command_file.yy.cc",
)
cc_library(
name = "command-file-lexer",
srcs = [
"command_file.yy.cc",
"command_file_lexer.cc",
],
hdrs = [
"command_file_lexer.h",
"lint_waiver.h",
],
copts = select({
"@platforms//os:windows": [],
"//conditions:default": ["-Wno-implicit-fallthrough"],
}),
deps = [
"//bazel:flex",
"//common/lexer:flex-lexer-adapter",
"//common/lexer:token-stream-adapter",
"//common/strings:position",
"//common/text:text-structure",
"//common/text:token-info",
"//common/text:token-stream-view",
"//common/util:container-util",
"//common/util:interval-set",
"//common/util:logging",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "violation-handler",
srcs = ["violation_handler.cc"],
hdrs = ["violation_handler.h"],
deps = [
":lint-rule-status",
"//common/strings:diff",
"//common/util:file-util",
"//common/util:user-interaction",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "command-file-lexer_test",
size = "small",
srcs = ["command_file_lexer_test.cc"],
deps = [
":command-file-lexer",
"//common/lexer:lexer-test-util",
"//common/text:token-info",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "lint-waiver",
srcs = ["lint_waiver.cc"],
hdrs = ["lint_waiver.h"],
copts = select({
"@platforms//os:windows": [],
"//conditions:default": ["-fexceptions"],
}),
features = ["-use_header_modules"], # precompiled headers incompatible with -fexceptions.
deps = [
":command-file-lexer",
"//common/strings:comment-utils",
"//common/strings:line-column-map",
"//common/strings:position",
"//common/text:text-structure",
"//common/text:token-info",
"//common/text:token-stream-view",
"//common/util:container-iterator-range",
"//common/util:container-util",
"//common/util:file-util",
"//common/util:interval-set",
"//common/util:iterator-range",
"//common/util:logging",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "file-analyzer",
srcs = ["file_analyzer.cc"],
hdrs = ["file_analyzer.h"],
deps = [
"//common/lexer",
"//common/lexer:token-stream-adapter",
"//common/parser:parse",
"//common/strings:line-column-map",
"//common/text:concrete-syntax-tree",
"//common/text:text-structure",
"//common/text:token-info",
"//common/text:token-stream-view",
"//common/util:logging",
"//common/util:spacer",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "linter-test-utils",
testonly = 1,
srcs = ["linter_test_utils.cc"],
hdrs = ["linter_test_utils.h"],
deps = [
":lint-rule-status",
"//common/text:token-info",
"//common/text:token-info-test-util",
"//common/util:algorithm",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest", # for library testonly
],
)
cc_library(
name = "syntax-tree-search-test-utils",
testonly = 1,
srcs = ["syntax_tree_search_test_utils.cc"],
hdrs = ["syntax_tree_search_test_utils.h"],
deps = [
":syntax-tree-search",
"//common/lexer:lexer-test-util",
"//common/text:token-info",
"//common/text:tree-utils",
"//common/util:algorithm",
"//common/util:logging",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest", # for library testonly
],
)
cc_library(
name = "line-linter",
srcs = ["line_linter.cc"],
hdrs = ["line_linter.h"],
deps = [
":line-lint-rule",
":lint-rule-status",
"//common/util:logging",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "line-linter-test-utils",
testonly = 1,
hdrs = ["line_linter_test_utils.h"],
deps = [
":line-lint-rule",
":line-linter",
":lint-rule-status",
":linter-test-utils",
"//common/text:text-structure",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "line-lint-rule",
hdrs = ["line_lint_rule.h"],
deps = [
":lint-rule",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "syntax-tree-linter",
srcs = ["syntax_tree_linter.cc"],
hdrs = ["syntax_tree_linter.h"],
deps = [
":lint-rule-status",
":syntax-tree-lint-rule",
"//common/text:concrete-syntax-leaf",
"//common/text:concrete-syntax-tree",
"//common/text:symbol",
"//common/text:syntax-tree-context",
"//common/text:tree-context-visitor",
"//common/util:logging",
],
)
cc_library(
name = "syntax-tree-linter-test-utils",
testonly = 1,
hdrs = ["syntax_tree_linter_test_utils.h"],
deps = [
":lint-rule-status",
":linter-test-utils",
":syntax-tree-lint-rule",
":syntax-tree-linter",
"//common/text:text-structure",
"//common/util:logging",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest", # for library testonly
],
)
cc_library(
name = "syntax-tree-lint-rule",
hdrs = ["syntax_tree_lint_rule.h"],
deps = [
":lint-rule",
"//common/text:concrete-syntax-leaf",
"//common/text:concrete-syntax-tree",
"//common/text:symbol",
"//common/text:syntax-tree-context",
],
)
cc_library(
name = "syntax-tree-search",
srcs = ["syntax_tree_search.cc"],
hdrs = ["syntax_tree_search.h"],
deps = [
"//common/analysis/matcher",
"//common/analysis/matcher:bound-symbol-manager",
"//common/text:concrete-syntax-leaf",
"//common/text:concrete-syntax-tree",
"//common/text:symbol",
"//common/text:syntax-tree-context",
"//common/text:tree-context-visitor",
],
)
cc_library(
name = "text-structure-linter",
srcs = ["text_structure_linter.cc"],
hdrs = ["text_structure_linter.h"],
deps = [
":lint-rule-status",
":text-structure-lint-rule",
"//common/text:text-structure",
"//common/util:logging",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "text-structure-linter-test-utils",
testonly = 1,
hdrs = ["text_structure_linter_test_utils.h"],
deps = [
":lint-rule-status",
":linter-test-utils",
":text-structure-linter",
"//common/text:symbol",
"//common/util:logging",
"@com_google_absl//absl/status",
"@com_google_googletest//:gtest", # for library testonly
],
)
cc_library(
name = "text-structure-lint-rule",
hdrs = ["text_structure_lint_rule.h"],
deps = [
":lint-rule",
"//common/text:text-structure",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "token-stream-linter",
srcs = ["token_stream_linter.cc"],
hdrs = ["token_stream_linter.h"],
deps = [
":lint-rule-status",
":token-stream-lint-rule",
"//common/text:token-stream-view",
"//common/util:logging",
],
)
cc_library(
name = "token-stream-linter-test-utils",
testonly = 1,
hdrs = ["token_stream_linter_test_utils.h"],
deps = [
":lint-rule-status",
":linter-test-utils",
":token-stream-lint-rule",
":token-stream-linter",
"//common/text:text-structure",
"//common/util:logging",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "token-stream-lint-rule",
hdrs = ["token_stream_lint_rule.h"],
deps = [
":lint-rule",
"//common/text:token-info",
],
)
cc_test(
name = "lint-rule-status_test",
srcs = ["lint_rule_status_test.cc"],
deps = [
":lint-rule-status",
"//common/text:concrete-syntax-tree",
"//common/text:token-info",
"//common/text:tree-builder-test-util",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "lint-waiver_test",
srcs = ["lint_waiver_test.cc"],
deps = [
":lint-waiver",
"//common/strings:line-column-map",
"//common/text:text-structure-test-utils",
"//common/text:token-info",
"//common/text:token-stream-view",
"//common/util:iterator-range",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "file-analyzer_test",
srcs = ["file_analyzer_test.cc"],
deps = [
":file-analyzer",
"//common/text:text-structure",
"//common/text:token-info",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "linter-test-utils_test",
srcs = ["linter_test_utils_test.cc"],
deps = [
":lint-rule-status",
":linter-test-utils",
"//common/util:range",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "line-linter_test",
srcs = ["line_linter_test.cc"],
deps = [
":line-lint-rule",
":line-linter",
":lint-rule-status",
"//common/text:token-info",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "syntax-tree-linter_test",
srcs = ["syntax_tree_linter_test.cc"],
deps = [
":lint-rule-status",
":syntax-tree-lint-rule",
":syntax-tree-linter",
"//common/text:concrete-syntax-leaf",
"//common/text:concrete-syntax-tree",
"//common/text:symbol",
"//common/text:syntax-tree-context",
"//common/text:token-info",
"//common/text:tree-builder-test-util",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "syntax-tree-search_test",
srcs = ["syntax_tree_search_test.cc"],
deps = [
":syntax-tree-search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher-builders",
"//common/text:symbol",
"//common/text:syntax-tree-context",
"//common/text:tree-builder-test-util",
"//common/text:tree-utils",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "syntax-tree-search-test-utils_test",
srcs = ["syntax_tree_search_test_utils_test.cc"],
deps = [
":syntax-tree-search-test-utils",
"//common/text:tree-builder-test-util",
"//common/util:range",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "text-structure-linter_test",
srcs = ["text_structure_linter_test.cc"],
deps = [
":lint-rule-status",
":text-structure-lint-rule",
":text-structure-linter",
"//common/text:text-structure",
"//common/text:token-info",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "token-stream-linter_test",
srcs = ["token_stream_linter_test.cc"],
deps = [
":lint-rule-status",
":token-stream-lint-rule",
":token-stream-linter",
"//common/text:token-info",
"//common/text:token-stream-view",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)