Using ldcupdate#
Command-Line#
ldcupdate <project-file> -module:[Module-Id] [Module Options] [-deltaTags] [-deltaviolations:<dviol-file>] [-generateDetailedReport] [-atomdb:true|false] [-merge] [-dobackups] [input files] -report:[FileFormat] -reportFile:<report-file>
ldcupdate allows the user to create a new project from source code, or update an existing project with new source code. It can produce a change report that shows which elements are new or which are no longer present. The report also contains a list of violations that are new and those that have been fixed. You can generate the delta violations report in a separate file - the file is not generated if no new violations were added or old violations removed. The presence or absence of the violations file can be used to determine if additional action is required after the update.
Caveat: Please note that input specification using wild cards should not be used to update projects, if the project being updated was created by explicitly listing the input files.
Examples#
Creating a New Project#
To create a new project using LDCUpdate, a user must specify:
The file name for the new project
The Lattix module to use
The source files
Creating Java Projects#
Below are some examples of commands to create a project.
ldcupdate <NewProjectFile.ldz> -module:java file1.jar file2.jar
Create a project based the specified source files.
ldcupdate <NewProjectFile.ldz> -module:dotnet @flist.txt
Create a project based on a list of source files supplied in the text file flist.txt
ldcupdate <NewProjectFile.ldz> -module:dotnet dll:DirName/[*.dll]
Create a project by loading in all dlls in the specified directory.
ldcupdate <NewProjectFile.ldz> -module:java sample.ear[*.jar]
ldcupdate <NewProjectFile.ldz> -module:java sample.ear[file1.jar] sample.ear[file2.jar]
ldcupdate <NewProjectFile.ldz> -module:java sample.ear!web.war!file1.jar earfile!warfile!file2.jar
ldcupdate <NewProjectFile.ldz> -module:java sample.ear!web.war!WEB-INF/lib[*.jar]
ldcupdate <NewProjectFile.ldz> -module:java sample.ear!WEB-INF/lib[*.jar]
ldcupdate <NewProjectFile.ldz> -module:java sample.ear!file.war[*.class]
Create a project from Java files including source from within EAR files. File names can be full path names. EAR and WAR files are treated like directories except that the delimiter character at the end is ‘!’ instead of ‘/’.
Note that the options -memberProcessing:all -expandMembersInDSM can be added to any of these commands to create a project with member level turned on.
Creating Clang Projects#
Create a clang project from a buildspec.xml or compile_commands.json file
ldcupdate <NewProjectFile.ldz> -module:clang buildspec.xml
ldcupdate <NewProjectFile.ldz> -module:clang compile_commands.json
Please see this section to learn about creating clang projects with buildspec.xml and compile_commands.json files.
Updating an Existing Project#
LDCUpdate can update an existing project with new source code.
The files originally used to create a Lattix project are stored in its project properties - see Project–> Project Properties–> <Module Name>–> Datasources in Lattix Architect.
If you run LDCUpdate without specifying any source files, the project will be updated using the current version of those files on your file system:
ldcupdate <ExistingProjectFile.ldz>
Alternatively you can specify new files to use as the source of the project:
ldcupdate <ExistingProjectFile.ldz> <newSourceFile> <anotherNewSourceFile>
For more information on ways to specify source files, see the examples in Creating a New Project. Caveat: Please note that input specification using wild cards should not be used to update projects, if the project being updated was created by explicitly listing the input files.
Here are some further LDCUpdate project update command examples:
ldcupdate <ExistingProjectFile.ldz> -report:txt -reportFile<report-file>
Update the given project and generate a report on the update. This report will show changes in content (source the has changed, is missing, or has been added) and changes in violations (missing or new). Available file formats to supply to the -report argument are txt, xml, html and excel.
ldcupdate <ExistingProjectFile.ldz> -deltaviolations:<DeltaviolationsFilename>
Update the given project and generate a report on the changes in violations. The violations report file is not generated if there were no changes.
ldcupdate <ExistingProjectFile.ldz> -memberProcessing:all -expandMembersInDSM
Update the project and turn member level processing on.
ldcupdate <ProjectFile.ldz> -atomdb:true
Update a project and turn on the atom database. Setting atomdb:false will turn off the atom database. If this option is not specified, the updated project will have the same atom database setting as the input project.
Further Help#
For more information and help on the options that can be provided to LDCUpdate, please run one of these commands:
ldcupdate -help
Shows the arguments available for ldcupdate.
ldcupdate -help:ModuleOptions
Shows all available modules and their options.
ldcupdate -help:<moduleName, e.g. java or clang>
Shows all the options for the specified module.
Modules#
Here is a list of modules currently available with Lattix. For an up-to-date list, run:
ldcupdate -help:ModuleOptions
module:
axivion, clang, dotnet, excel, jama, java, klc, ldx, oracle, parasoft, python, rhapsody, ruby, sparxea, sql, understand-cpp, understand-python, understand-fortran, understand-ada, magicdraw, xmi
Module Options#
Here is a list of modules and options currently available with Lattix. For an up-to-date list, run
ldcupdate -help:ModuleOptions
ModuleId: axivion
Module input types
rfg:<file or directory>
ldi.xml:<file or directory>
ldi:<file or directory>
Module loading options:
-axivion_home:<value>
Axivion Home Directory
-AXIVION_PYTHON_EXE:<value>
Python EXE
-skip_atoms:<value>[,<value>...]
Skip atom matching these patterns
-logfile:<value>
Logfile Name
-useParentDs
Use Parent Datasource
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
Module partitioning options:
-mergeDupAtoms
Merge Duplicate Atoms
-createFileSubsystem
Create Subsystems For Assemblies
-createFileSubsystemDir
Create Subsystems Corresponding to Directory Structure
ModuleId: clang
Module input types
<Build Specification File>
lo:<file or directory>
vs-sln-file:sln_name=<value>,sln_cfg=<value>
sln_name:Visual Studio File
sln_cfg:Build Configuration
projconfig:<file or directory>
Module loading options:
-filter_header_on_source
Filter dependencies from header to source files
-include_standard_headers
Include standard Clang headers
-include_vs_headers
Include Visual Studio headers
-auto_includes
Automatically detect include directories in source tree
-compute_vis_decl
Compute declaration information
-canonical
Convert symbolic links to physical file names.
-compile_include_files
Compile Include Files
-only_process_files_in_root_dirs
Only Process Files in Root Dirs
-honor_excluded_source_files_for_vs
Honor excluded source files in Visual Studio
-dont_generate_compiler_flag_properties
Don't generate compiler flag properties for atoms
-dont_generate_preproc_properties
Don't generate preprocessor properties for atoms
-dont_generate_clang_properties
Don't generate clang properties for atoms
-dont_generate_dependency_line_numbers
Don't generate dependency line numbers
-skip_dup_includes
Skip duplicate include files
-mem_diag
Enable memory diagnostics
-only_files:<value>[,<value>...]
Include files matching these names
-only_datasources:<value>[,<value>...]
Include files only from these datasources
-filter_symbols:<value>[,<value>...]
Skip atoms matching these patterns
-dirs:<value>[,<value>...]
Include directories
-cmd_line_options:<value>[,<value>...]
Compiler options. If an option contains a comma, it should be escaped with a backslash
-remove_prefix:<value>[,<value>...]
Remove these prefixes from atom names
-exts:<value>[,<value>...]
Header file extensions
-source_exts:<value>[,<value>...]
Source file extensions
-solo_declarations
Create dependencies to declarations if there's only one
-createDeclAtoms
Create atoms for declarations
-keep-obj-files
Save object files
-temp_directory:<value>
Directory to use for temporary files
-max-thread-count:<value>
Maximum number of compiler threads that can be run simultaneously. Zero means unlimited
-root_dir:<value>
Directory to use to resolve relative files in buildspec.
-skip-pounds
Prevent Architect from include preprocessor source code in the model.
-logfile:<value>
Name of log file - warning - log files can be large and significantly impact update performance.
-dependency_properties
Generates diagnostic information about dependencies. Typically disabled as this can consume a lot of memory.
-buildspec_output_file:<value>
Buildspec Output File
-stalled_process_check_timeout:<value>
Number of milliseconds to wait before considering the process to be stalled and possibly killed
-dry_run_file:<value>
Setting this will save compile commands to the file instead of running them.
-useParentDs
Use Parent Datasource
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
Module partitioning options:
-mergeDupAtoms
Merge duplicate atoms
-createFileSubsystem
Create Subsystem for Datasources
-createFileSubsystemDir
Include Directory in Datasource Subsystem Name
ModuleId: dotnet
Module input types
dll:<file or directory>
exe:<file or directory>
vs-sln-file:sln_name=<value>,sln_cfg=<value>
sln_name:Visual Studio File
sln_cfg:Build Configuration
Module loading options:
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
-dotnet_include_prefix:<Class Namespace Prefix>[,<Class Namespace Prefix>...]
Include only classes with these package prefixes
-dotnet_exclude:<value>[,<value>...]
Exclude classes containing these strings
-dotnet_exclude_module:<value>[,<value>...]
Exclude <Module> fields that include these strings
-mixeddlls
Mixed assembly support
-usepdb
Read source file information from associated PDB
-processNative
Process Native DLLs
-skipPrivates
Skip private classes
-skipGlobals
Skip <Module> & DLL Atoms
-usePDBLocationForPath
Use PDB Location For Path
-alwaysCreateMatchingExports
Always Create Matching Exports
-stripPrefixFromPath:<value>[,<value>...]
Strip prefixes from assembly path
-logfile:<File Name>
Logfile Name
-globalpartition:<value>
Global partition name
Module partitioning options:
-mergeDupAtoms
Merge Duplicate Atoms
-createFileSubsystem
Create subsystems for assemblies
-createFileSubsystemDir
Create Subsystems Corresponding to Directory Structure
ModuleId: excel
Module input types
xlsx:<file or directory>
xls:<file or directory>
Module loading options:
-worksheet_name:<value>
Name of Worksheet
-delimiter_char:<value>
Hierarchy Delimiter Character
-format:[column|matrix]
Excel Format
-always_create_target_subsystem
Always Create Target Subsystem
-mit_format
MIT Format
-read_dependencies:[across|down]
Read Dependencies
-element_names_column:<value>
Element Names Column
-first_data_column:<value>
First Data Column
-first_data_row:<value>
First Data Row
ModuleId: jama
Module input types
ldi.xml:<file or directory>
xml:<file or directory>
ldi:<file or directory>
jamadb:url=<value>,user=<value>,password=<value>,project=<value>
url:URL
user:User
password:Password
project:Project
Module partitioning options:
-mergeDupAtoms
Merge Duplicate Atoms
-createFileSubsystem
Create Subsystems for files
-createFileSubsystemDir
Create Subsystems for directory hierarchy
ModuleId: java
Module input types
jar:<file or directory>
class:<file or directory>
zip:<file or directory>
Module loading options:
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
-dependency_line_numbers
Enable Line Number Processing
-java_include_pattern:<Include class pattern>[,<Include class pattern>...]
Include only classes matching these patterns
-java_exclude_pattern:<Exclude class pattern>[,<Exclude class pattern>...]
Exclude classes containing these patterns
-revision_field:<value>
The name of the static class member field that gives revision information
-hide_synthetic_variables
Hide Synthetic Variables
Module partitioning options:
-createFileSubsystem
Create Subsystems for Jar files/class path
-createFileSubsystemDir
Create Subsystems Corresponding to Directory Structure
-ignoreDupAtoms
Ignore Duplicate Classes/Interfaces
ModuleId: klc
Module input types
klc:<file or directory>
klocworkdatabase:host=<value>,port=<value>,user=<value>,password=<value>,project=<value>,build=<value>
host:Host
port:Port
user:Username
password:Password
project:Project
build:Build
Module loading options:
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
-dependency_line_numbers
Enable Line Number Processing
-skipHeaderRefs
Filter references from header files to source files
-atomsForDeclarations
Create atoms for declarations
-importMetrics
Import Metrics from Klocwork
-logQueries
Log Sql Queries
-filterSymbols:<value>[,<value>...]
Skip symbols containing these substrings
-includeSymbols:<value>[,<value>...]
Only include symbols containing these substrings
-removePrefix:<value>[,<value>...]
Remove prefix from atom names
-headerFileExts:<value>[,<value>...]
Extensions for header files
-logFile:<value>
Log File Name
ModuleId: ldx
Module input types
ldi.xml:<file or directory>
ldi:<file or directory>
Module loading options:
-logfile:<value>
Logfile Name
-allow_dup_atoms
Duplicate atoms will have atom kind appended to name
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
Module partitioning options:
-createFileSubsystem
Create Subsystems for Assemblies
-createFileSubsystemDir
Create Subsystems for Assemblies Directory
ModuleId: oracle
Module input types
sql:<file or directory>
fnc:<file or directory>
pkb:<file or directory>
pks:<file or directory>
trg:<file or directory>
prc:<file or directory>
oracledatabase:name=<value>,host=<value>,port=<value>,user=<value>,passwd=<value>,useoci=<value>
name:SID
host:Host
port:Port
user:User
passwd:Password
useoci:Use OCI Driver
Module loading options:
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
-dependency_line_numbers
Enable Line Number Processing
-createAtomsForSynonyms
Create Atoms For Synonyms
-movePublicSynonyms
This will move public synonym atoms into the schema it references.
-processTags
Process Tags Inside Comments
-resolveUnknowns
Show External References
-filterKnownExterns
Filter known externals
-useDiskCache
Use disk caching to minimize memory use
-runSqlParser
Parse Oracle Source Code in Database
-runStoreSqlSource
Store SQL Source Code in Project (to Enable View Source)
ModuleId: parasoft
Module input types
deps:<file or directory>
Module loading options:
-forceLowerCase
Force lowercase names
-normalize_paths
Normalize paths
-remove_prefix:<value>[,<value>...]
Remove prefix
-useParentDs
Use Parent Datasource
Module partitioning options:
-ignoreDupAtoms
Ignore duplicate atoms
ModuleId: python
Module input types
py:<file or directory>
json:<file or directory>
ldi:<file or directory>
ldi.xml:<file or directory>
Module loading options:
-PYDEPS_CMD:<value>
pydeps command
Module partitioning options:
-mergeDupAtoms
Merge Duplicate Atoms
-createFileSubsystem
Create Subsystems for files
-createFileSubsystemDir
Create Subsystems for directory hierarchy
ModuleId: rhapsody
Module input types
rpyx:<file or directory>
rpy:<file or directory>
Module loading options:
-crPartForActors
Create "Actors&UseCases" Partition
-crPartForCollabDiags
Create "CollaborationDiagrams" Partition
-crPartForClasses
Create "Classes&Interfaces" Partition
-crPartForComps
Create "Components" Partition
-crPartForDeployDiags
Create "DeploymentDiagrams" Partition
-crPartForEvents
Create "Events" Partition
-crPartForObjects
Create "Objects" Partition
-crPartForObjectModelDiags
Create "ObjectModelDiagrams" Partition
-crPartForPackages
Create "Packages" Partition
-crPartForSequenceDiags
Create "SequenceDiagrams" Partition
-crPartForStereotypes
Create "Stereotypes" Partition
-crPartForStructureDiags
Create "StructureDiagrams" Partition
-crPartForTypes
Create "Types" Partition
-crPartForUseCaseDiags
Create "UseCaseDiagrams" Partition
-skipComment
Skip Comment and Requirement
-skipComps
Skip Component
-skipEvents
Skip Event
-skipGlobals
Skip Global Function and Variable
-skipObjs
Skip Object
-skipObjDiags
Skip Object Diagram
-skipIntDiags
Skip Sequence & Collaboration Diagram
-skipStates
Skip State
-skipStereoTypes
Skip Stereotype
-skipStrDiags
Skip Structure Diagram
-skipTypes
Skip Type
-skipUseCases
Skip Actor, UseCase and UseCase Diagram
ModuleId: ruby
Module input types
rb:<file or directory>
json:<file or directory>
Module loading options:
-ruby_exe:<value>
Ruby Executable
-RUBROWSER_CMD:<value>
Rubrowser command location
Module partitioning options:
-mergeDupAtoms
Merge Duplicate Atoms
-createFileSubsystem
Create Subsystems for files
-createFileSubsystemDir
Create Subsystems for directory hierarchy
ModuleId: sparxea
Module input types
qea:<file or directory>
eap:<file or directory>
eapx:<file or directory>
ldi:<file or directory>
xml:<file or directory>
db:connect=<value>
connect:Connection String
Module loading options:
-sparxea_home:<value>
SparxEA HOME
-use_java_home
Setting Java HOME to a 32 bit Java will allow support for 32 bit SparxEA
-java_home:<value>
Java HOME
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
-skipDiagrams
Skip all Diagrams
-skipNotes
Skip all Notes
-codeElementsOnly
Load Code Elements Only (Class, Operation, Attribute)
-umlElementsOnly
Load UML Elements Only
-matchType2Class
Match Type string to Class/Interface name
-matchTypeWithDir2Class
Match Type string with embedded colons (e.g. A::B::C) to Class/Interface name
-genMessageMethods
Generate Methods for Sequence Diagram Messages
ModuleId: sql
Module input types
sql:<file or directory>
ddl:<file or directory>
sqlserverconnection:host=<value>,port=<value>,user=<value>,password=<value>,type=<value>
host:Server\Instance
port:Port (optional)
user:Username (optional)
password:Password (optional)
type:Database Type
Module loading options:
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
-allMetaData
Scan system meta-data
-saveSource
Store source in model
-parseSource
Parse SQL Source Code
-caseSensitive
Preserve case of identifiers
-dbs:<value>[,<value>...]
Process Only These Databases
-logfile:<value>
Debugging log file
ModuleId: understand-python
Module input types
und:<file or directory>
udb:<file or directory>
Module loading options:
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
ModuleId: understand-cpp
Module input types
und:<file or directory>
udb:<file or directory>
Module loading options:
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
-dependency_line_numbers
Enable Line Number Processing
-filterHeaderFileDependencies
Exclude non-include header file dependencies
-foldUnnamedIntoTypeDef
Fold Unnamed Types into Typedefs
-filterDuplicateGlobals
Filter duplicate global elements
-skipHeaderFileRefs
Skip dependencies of header files on source files
-cppVisibility
Visibility filter
-useTotalLineCount
Use Total Line Count (including comments)
-cppUniqueHeaders
Ignore include references to non-unique header files.
-scanDupNames
Scan namespace for duplicates
-createGlobalVarUsageProperties
Create Global Variable Usage Properties
-removePrefix:<value>[,<value>...]
Remove prefix from atom names
-filterSymbolsV6:<value>[;<value>...]
Skip symbols matching these patterns (regexp)
-filterFilesEnable
Enable File Filtering
-createDeclAtoms
Create Atoms for Declarations
-filterFilesList:<value>[,<value>...]
Skip these files
-logfile:<value>
Log file name
ModuleId: understand-ada
Module input types
und:<file or directory>
udb:<file or directory>
Module loading options:
-logfile:<value>
Log file name
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
-filterSymbolsV6:<value>[;<value>...]
Skip symbols matching these patterns (regexp)
-dependency_line_numbers
Enable Line Number Processing
ModuleId: understand-fortran
Module input types
und:<file or directory>
udb:<file or directory>
Module loading options:
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
-dependency_line_numbers
Enable Line Number Processing
-atomsForCommonBlocks
Create Atoms for Common Blocks
ModuleId: magicdraw
Module input types
mdzip:<file or directory>
xmi:<file or directory>
xml:<file or directory>
uml:<file or directory>
Module loading options:
-removeEmptyBlocks
Remove Empty Blocks
-reverseSatisfyRelationship
Reverse Satisfy Relationship
-useMergePropName
Use merge property name
-mergePropName:<value>
Merge property name
-memberProcessing:[none|some|all]
Member Level Processing
-memberLevel:<value>[,<value>...]
Load Members for Specified Elements:
ModuleId: xmi
Module input types
xmi:<file or directory>
xml:<file or directory>
uml:<file or directory>
Module loading options:
-skipInteractions
Skip Interaction
-skipUseCases
Skip UseCase
-skipTypes
Skip Type
-skipStates
Skip State
-skipSignals
Skip Signal
-skipProfiles
Skip Profile
File Format#
FileFormat:
txt,xml,html,excel
Success or Failure#
LDCUpdate returns a failure code when it has been unable to complete its processing.