| # This package contains functions and classes related to analysis of |
| # structural representations of Verilog/SystemVerilog source code. |
| |
| default_visibility = [ |
| "//verilog:__subpackages__", |
| ] |
| |
| package( |
| default_applicable_licenses = ["//:license"], |
| default_visibility = default_visibility, |
| features = ["layering_check"], |
| ) |
| |
| cc_library( |
| name = "default-rules", |
| hdrs = ["default_rules.h"], |
| deps = [ |
| "//verilog/analysis/checkers:verilog-lint-rules", |
| ], |
| ) |
| |
| cc_test( |
| name = "default-rules_test", |
| srcs = ["default_rules_test.cc"], |
| deps = [ |
| ":default-rules", |
| ":lint-rule-registry", |
| "//verilog/analysis/checkers:verilog-lint-rules", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "descriptions", |
| hdrs = ["descriptions.h"], |
| deps = ["@com_google_absl//absl/strings:string_view"], |
| alwayslink = 1, |
| ) |
| |
| cc_library( |
| name = "extractors", |
| srcs = ["extractors.cc"], |
| hdrs = ["extractors.h"], |
| deps = [ |
| ":verilog-analyzer", |
| "//common/text:tree-utils", |
| "//common/util:logging", |
| "//verilog/CST:identifier", |
| "//verilog/CST:module", |
| "//verilog/preprocessor:verilog-preprocess", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings:string_view", |
| ], |
| ) |
| |
| cc_test( |
| name = "extractors_test", |
| srcs = ["extractors_test.cc"], |
| deps = [ |
| ":extractors", |
| "//verilog/preprocessor:verilog-preprocess", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "json-diagnostics", |
| srcs = ["json_diagnostics.cc"], |
| hdrs = ["json_diagnostics.h"], |
| deps = [ |
| ":verilog-analyzer", |
| "//common/analysis:file-analyzer", |
| "//common/strings:line-column-map", |
| "@com_google_absl//absl/strings:string_view", |
| "@jsonhpp//:json", |
| ], |
| ) |
| |
| cc_library( |
| name = "flow-tree", |
| srcs = ["flow_tree.cc"], |
| hdrs = ["flow_tree.h"], |
| deps = [ |
| "//common/text:token-stream-view", |
| "//common/util:logging", |
| "//verilog/parser:verilog-token-enum", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings:string_view", |
| ], |
| ) |
| |
| cc_test( |
| name = "flow-tree_test", |
| srcs = ["flow_tree_test.cc"], |
| deps = [ |
| ":flow-tree", |
| "//common/text:token-stream-view", |
| "//verilog/parser:verilog-lexer", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "lint-rule-registry", |
| srcs = ["lint_rule_registry.cc"], |
| hdrs = ["lint_rule_registry.h"], |
| deps = [ |
| ":descriptions", |
| "//common/analysis:line-lint-rule", |
| "//common/analysis:syntax-tree-lint-rule", |
| "//common/analysis:text-structure-lint-rule", |
| "//common/analysis:token-stream-lint-rule", |
| "//common/strings:compare", |
| "//common/util:container-util", |
| "//common/util:logging", |
| "@com_google_absl//absl/container:node_hash_map", |
| ], |
| ) |
| |
| cc_test( |
| name = "json-diagnostics_test", |
| srcs = ["json_diagnostics_test.cc"], |
| deps = [ |
| ":json-diagnostics", |
| ":verilog-analyzer", |
| "//common/util:logging", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| "@jsonhpp//:json", |
| ], |
| ) |
| |
| cc_test( |
| name = "lint-rule-registry_test", |
| srcs = ["lint_rule_registry_test.cc"], |
| deps = [ |
| ":descriptions", |
| ":lint-rule-registry", |
| "//common/analysis:line-lint-rule", |
| "//common/analysis:lint-rule-status", |
| "//common/analysis:syntax-tree-lint-rule", |
| "//common/analysis:text-structure-lint-rule", |
| "//common/analysis:token-stream-lint-rule", |
| "//common/text:concrete-syntax-leaf", |
| "//common/text:concrete-syntax-tree", |
| "//common/text:syntax-tree-context", |
| "//common/text:text-structure", |
| "//common/text:token-info", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "verilog-analyzer", |
| srcs = [ |
| "verilog_analyzer.cc", |
| "verilog_excerpt_parse.cc", |
| # paired together because of mutual recursion |
| ], |
| hdrs = [ |
| "verilog_analyzer.h", |
| "verilog_excerpt_parse.h", |
| ], |
| deps = [ |
| "//common/analysis:file-analyzer", |
| "//common/lexer:token-stream-adapter", |
| "//common/strings:comment-utils", |
| "//common/strings:mem-block", |
| "//common/text:concrete-syntax-leaf", |
| "//common/text:concrete-syntax-tree", |
| "//common/text:symbol", |
| "//common/text:text-structure", |
| "//common/text:token-info", |
| "//common/text:token-stream-view", |
| "//common/text:visitors", |
| "//common/util:container-util", |
| "//common/util:logging", |
| "//common/util:status-macros", |
| "//verilog/parser:verilog-lexer", |
| "//verilog/parser:verilog-lexical-context", |
| "//verilog/parser:verilog-parser", |
| "//verilog/parser:verilog-token-classifications", |
| "//verilog/parser:verilog-token-enum", |
| "//verilog/preprocessor:verilog-preprocess", |
| "@com_google_absl//absl/log", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| ], |
| ) |
| |
| cc_library( |
| name = "verilog-equivalence", |
| srcs = ["verilog_equivalence.cc"], |
| hdrs = ["verilog_equivalence.h"], |
| deps = [ |
| "//common/lexer:token-stream-adapter", |
| "//common/text:token-info", |
| "//common/text:token-stream-view", |
| "//common/util:enum-flags", |
| "//common/util:logging", |
| "//verilog/parser:verilog-lexer", |
| "//verilog/parser:verilog-parser", |
| "//verilog/parser:verilog-token-classifications", |
| "//verilog/parser:verilog-token-enum", |
| "@com_google_absl//absl/strings:string_view", |
| ], |
| ) |
| |
| cc_library( |
| name = "verilog-linter-configuration", |
| srcs = ["verilog_linter_configuration.cc"], |
| hdrs = ["verilog_linter_configuration.h"], |
| deps = [ |
| ":default-rules", |
| ":descriptions", |
| ":lint-rule-registry", |
| "//common/analysis:line-lint-rule", |
| "//common/analysis:syntax-tree-lint-rule", |
| "//common/analysis:text-structure-lint-rule", |
| "//common/analysis:token-stream-lint-rule", |
| "//common/util:container-util", |
| "//common/util:enum-flags", |
| "//common/util:file-util", |
| "//common/util:logging", |
| "//common/util:status-macros", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/status:statusor", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| ], |
| ) |
| |
| cc_library( |
| name = "verilog-linter-constants", |
| hdrs = ["verilog_linter_constants.h"], |
| deps = ["@com_google_absl//absl/strings:string_view"], |
| ) |
| |
| cc_library( |
| name = "verilog-linter", |
| srcs = ["verilog_linter.cc"], |
| hdrs = ["verilog_linter.h"], |
| deps = [ |
| ":default-rules", |
| ":lint-rule-registry", |
| ":verilog-analyzer", |
| ":verilog-linter-configuration", |
| ":verilog-linter-constants", |
| "//common/analysis:citation", |
| "//common/analysis:line-linter", |
| "//common/analysis:lint-rule-status", |
| "//common/analysis:lint-waiver", |
| "//common/analysis:syntax-tree-linter", |
| "//common/analysis:text-structure-linter", |
| "//common/analysis:token-stream-linter", |
| "//common/analysis:violation-handler", |
| "//common/strings:line-column-map", |
| "//common/text:concrete-syntax-tree", |
| "//common/text:text-structure", |
| "//common/text:token-info", |
| "//common/util:file-util", |
| "//common/util:logging", |
| "//common/util:status-macros", |
| "//verilog/parser:verilog-token-classifications", |
| "//verilog/parser:verilog-token-enum", |
| "@com_google_absl//absl/flags:flag", |
| "@com_google_absl//absl/log", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/status:statusor", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| ], |
| ) |
| |
| cc_test( |
| name = "verilog-analyzer_test", |
| srcs = ["verilog_analyzer_test.cc"], |
| deps = [ |
| ":verilog-analyzer", |
| "//common/analysis:file-analyzer", |
| "//common/strings:display-utils", |
| "//common/text:concrete-syntax-leaf", |
| "//common/text:concrete-syntax-tree", |
| "//common/text:symbol", |
| "//common/text:text-structure", |
| "//common/text:token-info", |
| "//common/text:token-info-test-util", |
| "//common/text:tree-utils", |
| "//common/util:casts", |
| "//common/util:logging", |
| "//verilog/parser:verilog-token-enum", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_test( |
| name = "verilog-linter-configuration_test", |
| srcs = ["verilog_linter_configuration_test.cc"], |
| deps = [ |
| ":default-rules", |
| ":descriptions", |
| ":lint-rule-registry", |
| ":verilog-linter", |
| ":verilog-linter-configuration", |
| "//common/analysis:line-lint-rule", |
| "//common/analysis:lint-rule-status", |
| "//common/analysis:syntax-tree-lint-rule", |
| "//common/analysis:text-structure-lint-rule", |
| "//common/analysis:token-stream-lint-rule", |
| "//common/strings:line-column-map", |
| "//common/text:concrete-syntax-leaf", |
| "//common/text:concrete-syntax-tree", |
| "//common/text:syntax-tree-context", |
| "//common/text:text-structure", |
| "//common/text:token-info", |
| "//common/text:tree-builder-test-util", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_test( |
| name = "verilog-linter_test", |
| srcs = ["verilog_linter_test.cc"], |
| deps = [ |
| ":default-rules", |
| ":verilog-analyzer", |
| ":verilog-linter", |
| ":verilog-linter-configuration", |
| "//common/analysis:lint-rule-status", |
| "//common/analysis:violation-handler", |
| "//common/util:file-util", |
| "//common/util:logging", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/status:statusor", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_test( |
| name = "verilog-equivalence_test", |
| srcs = ["verilog_equivalence_test.cc"], |
| deps = [ |
| ":verilog-equivalence", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_absl//absl/types:span", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "verilog-filelist", |
| srcs = ["verilog_filelist.cc"], |
| hdrs = ["verilog_filelist.h"], |
| deps = [ |
| "//common/util:file-util", |
| "//common/util:iterator-range", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| ], |
| ) |
| |
| cc_test( |
| name = "verilog-filelist_test", |
| srcs = ["verilog_filelist_test.cc"], |
| deps = [ |
| ":verilog-filelist", |
| "//common/util:file-util", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "verilog-project", |
| srcs = ["verilog_project.cc"], |
| hdrs = ["verilog_project.h"], |
| deps = [ |
| ":verilog-analyzer", |
| "//common/strings:mem-block", |
| "//common/strings:string-memory-map", |
| "//common/text:text-structure", |
| "//common/util:file-util", |
| "//common/util:logging", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/status:statusor", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_absl//absl/time", |
| "@com_google_absl//absl/types:optional", |
| ], |
| ) |
| |
| cc_test( |
| name = "verilog-project_test", |
| srcs = ["verilog_project_test.cc"], |
| deps = [ |
| ":verilog-analyzer", |
| ":verilog-project", |
| "//common/text:text-structure", |
| "//common/util:file-util", |
| "//common/util:logging", |
| "//common/util:range", |
| "//verilog/CST:module", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "symbol-table", |
| srcs = ["symbol_table.cc"], |
| hdrs = ["symbol_table.h"], |
| deps = [ |
| ":verilog-project", |
| "//common/strings:compare", |
| "//common/strings:display-utils", |
| "//common/text:concrete-syntax-leaf", |
| "//common/text:concrete-syntax-tree", |
| "//common/text:symbol", |
| "//common/text:token-info", |
| "//common/text:tree-compare", |
| "//common/text:tree-context-visitor", |
| "//common/text:tree-utils", |
| "//common/text:visitors", |
| "//common/util:casts", |
| "//common/util:enum-flags", |
| "//common/util:logging", |
| "//common/util:map-tree", |
| "//common/util:spacer", |
| "//common/util:tree-operations", |
| "//common/util:value-saver", |
| "//common/util:vector-tree", |
| "//verilog/CST:class", |
| "//verilog/CST:declaration", |
| "//verilog/CST:functions", |
| "//verilog/CST:macro", |
| "//verilog/CST:module", |
| "//verilog/CST:net", |
| "//verilog/CST:package", |
| "//verilog/CST:parameters", |
| "//verilog/CST:port", |
| "//verilog/CST:seq-block", |
| "//verilog/CST:statement", |
| "//verilog/CST:tasks", |
| "//verilog/CST:type", |
| "//verilog/CST:verilog-nonterminals", |
| "//verilog/parser:verilog-parser", |
| "//verilog/parser:verilog-token-enum", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/status:statusor", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_absl//absl/time", |
| ], |
| ) |
| |
| cc_test( |
| name = "symbol-table_test", |
| srcs = ["symbol_table_test.cc"], |
| deps = [ |
| ":symbol-table", |
| ":verilog-filelist", |
| ":verilog-project", |
| "//common/text:tree-utils", |
| "//common/util:file-util", |
| "//common/util:logging", |
| "//common/util:range", |
| "//common/util:tree-operations", |
| "@com_google_absl//absl/base:core_headers", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "dependencies", |
| srcs = ["dependencies.cc"], |
| hdrs = ["dependencies.h"], |
| deps = [ |
| ":symbol-table", |
| ":verilog-project", |
| "//common/strings:compare", |
| "//common/strings:display-utils", |
| "//common/util:logging", |
| "@com_google_absl//absl/strings:string_view", |
| ], |
| ) |
| |
| cc_test( |
| name = "dependencies_test", |
| srcs = ["dependencies_test.cc"], |
| deps = [ |
| ":dependencies", |
| ":symbol-table", |
| ":verilog-project", |
| "//common/util:file-util", |
| "//common/util:logging", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings:string_view", |
| "@com_google_googletest//:gtest", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |