blob: 7adb8e5d1f13e55b42cfe57158ed4672a3520256 [file] [log] [blame]
# This package contains functions and classes for analyzing text structures.
load("//bazel:flex.bzl", "genlex")
licenses(["notice"])
package(
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:spacer",
"//common/util:logging",
"@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",
],
)