Merge pull request #116 from bkryza/v0.3.3

V0.3.3
This commit is contained in:
Bartek Kryza
2023-03-26 20:38:27 +02:00
committed by GitHub
11 changed files with 34 additions and 2 deletions

View File

@@ -1,5 +1,7 @@
# CHANGELOG
### 0.3.3
* Added 'add_compile_flags' config options (#112)
* Added JSON generator (#114)
* Added diagram templates support (#105)
* Added parents (base classes) diagram filter

View File

@@ -4,7 +4,7 @@
[![Build status](https://github.com/bkryza/clang-uml/actions/workflows/build.yml/badge.svg)](https://github.com/bkryza/clang-uml/actions)
[![Coverage](https://codecov.io/gh/bkryza/clang-uml/branch/master/graph/badge.svg)](https://codecov.io/gh/bkryza/clang-uml)
[![Version](https://img.shields.io/badge/version-0.3.2-blue)](https://github.com/bkryza/clang-uml/releases)
[![Version](https://img.shields.io/badge/version-0.3.3-blue)](https://github.com/bkryza/clang-uml/releases)
[![Version](https://img.shields.io/badge/LLVM-12,13,14,15-orange)](https://github.com/bkryza/clang-uml/releases)
`clang-uml` is an automatic C++ to UML class, sequence, package and include diagram generator, driven by

View File

@@ -53,6 +53,9 @@
```yaml
# Directory containing the compile_commands.json file
compilation_database_dir: debug
# Inject additional compile commands to the compilation database entries
add_compile_flags:
- '-Wno-vla-extension'
# The directory where *.puml files will be generated
output_directory: docs/diagrams
# Set this as default for all diagrams

View File

@@ -183,4 +183,17 @@ void generate_diagrams(const std::vector<std::string> &diagram_names,
}
}
void adjust_compilation_database(const clanguml::config::config &config,
clang::tooling::CompilationDatabase &db)
{
if (config.add_compile_flags && !config.add_compile_flags().empty()) {
for (auto &compile_command : db.getAllCompileCommands()) {
compile_command.CommandLine.insert(
compile_command.CommandLine.begin() + 1,
config.add_compile_flags().begin(),
config.add_compile_flags().end());
}
}
}
} // namespace clanguml::common::generators

View File

@@ -139,6 +139,9 @@ void find_translation_units_for_diagrams(
const std::vector<std::string> &compilation_database_files,
std::map<std::string, std::vector<std::string>> &translation_units_map);
void adjust_compilation_database(const clanguml::config::config &config,
clang::tooling::CompilationDatabase &db);
template <typename DiagramModel, typename DiagramConfig,
typename TranslationUnitVisitor>
class diagram_ast_consumer : public clang::ASTConsumer {

View File

@@ -31,6 +31,7 @@ std::string to_string(source_file_t sf)
return "implementation";
default:
assert(false);
return "";
}
}

View File

@@ -37,7 +37,8 @@ std::string to_string(template_parameter_kind_t k)
case template_parameter_kind_t::concept_constraint:
return "concept_constraint";
default:
assert(0);
assert(false);
return "";
}
}

View File

@@ -222,6 +222,7 @@ struct config : public inheritable_diagram_options {
// directory
option<std::string> compilation_database_dir{
"compilation_database_dir", "."};
option<std::vector<std::string>> add_compile_flags{"add_compile_flags"};
option<std::string> output_directory{"output_directory"};
option<std::map<std::string, diagram_template>> diagram_templates{

View File

@@ -585,6 +585,7 @@ template <> struct convert<config> {
get_option(node, rhs.using_namespace);
get_option(node, rhs.output_directory);
get_option(node, rhs.compilation_database_dir);
get_option(node, rhs.add_compile_flags);
get_option(node, rhs.include_relations_also_as_members);
get_option(node, rhs.puml);
get_option(node, rhs.generate_method_arguments);

View File

@@ -187,6 +187,7 @@ YAML::Emitter &operator<<(YAML::Emitter &out, const config &c)
out << c.compilation_database_dir;
out << c.output_directory;
out << c.add_compile_flags;
out << dynamic_cast<const inheritable_diagram_options &>(c);

View File

@@ -76,6 +76,12 @@ int main(int argc, const char *argv[])
cli.diagram_names, cli.config, compilation_database_files,
translation_units_map);
//
// Inject any additional compilation flags from the config to the
// compilation database
//
clanguml::common::generators::adjust_compilation_database(cli.config, *db);
clanguml::common::generators::generate_diagrams(cli.diagram_names,
cli.config, cli.effective_output_directory, db, cli.verbose,
cli.thread_count, cli.generators, translation_units_map);