Thanks for the information. The task is much clearer now. This is a new use case on which I had to first think about it and make some tests to find out how to accomplish it.
You are right regarding to usage of a project/user tool. It is not possible to modify the configuration file for this task for a static analysis with the tool because it is necessary that the static analysis tool runs the build process.
First a batch file is required which can be stored everywhere and can be written independent on UEStudio / Microchip project. The batch file must contain at least following lines:
Code: Select all
@echo off
setlocal EnableExtensions DisableDelayedExpansion
if "%~1" == "" (
echo Error: Project file name is required as parameter for %~f0.
goto EndBatch
)
set "PATH=C:\Path to Compiler XC16\bin;%PATH%"
set "UESMAKEFILE=%~n1.mak"
set "UESNOCMD=1"
set "MYMAKESTOPAT=3"
if exist "%UESMAKEFILE%" goto RunTool
cd /D "%~dp1"
if exist "%UESMAKEFILE%" goto RunTool
echo ERROR: There is no make file "%UESMAKEFILE%" in "%CD%".
goto EndBatch
:RunTool
"C:\Path to cpptesttrace\cpptesttrace.exe" [options] "%ProgramFiles%\IDM Computer Solutions\UEStudio\mymake.exe" CLEAN ALL
:EndBatch
endlocal
Environment variable PATH
I suppose that you have clicked once in the past on ribbon tab
Build in first ribbon group
Settings on down arrow
Set compiler paths and set in opened dialog window the XC16 compiler path for
Microchip C Compiler or modified the application configs file for
Microchip C Compiler and added the compiler path to the configuration file which UEStudio uses to create the project make file. For that reason it is necessary to do what UEStudio does before running a build: prepend
local environment variable
PATH with the compiler path.
Compiler specific environment variables
UEStudio sets also the environment variables specified in the configs file in section
[Environment]. The standard configs file
configs\Microchip C compiler\Application does not contain any lines in this section to define environment variables to set before running the build/compile. For that reason the batch file code above also does not set such environment variables. But if your customized configuration file for Microchip contains lines in section
[Environment], the batch file must contain the appropriate lines to set also those environment variables on execution.
Environment variable UESMAKEFILE
mymake.exe in program files directory of UEStudio is called (via uespawn.dat which is in real an executable to capture output of make process) with nearly no parameters. The options for
mymake.exe are defined via environment variables which UEStudio sets before calling
mymake.exe. For that reason the batch file must set also at least those environment variables which are required by
mymake.exe to successfully run the build.
Most important environment variable for
mymake.exe is
UESMAKEFILE which must have the name of the make file generated by UEStudio before running a build/compilation. The batch file expects as first parameter the project file name. The make file generated by UEStudio has same file name as the *.prj project file, just the file extension is .mak instead of .prj. So the name of the make file can be derived from project file name.
UEStudio sets the project directory as configured in
Project Settings opened with a click on ribbon tab
Project in first ribbon group
Project on item
Project settings as current directory before running the build/compilation and creates also the make file in this directory. The batch file expects that the current directory is the project directory and checks if the make file exists in this directory. In case of this condition is not true, it changes the current directory to directory of project file which works only on not using a UNC path as otherwise command
pushd would be required with
popd instead of command
cd. Then the check for existence of make file is done once again with printing an error message if make file is again not present in current directory.
Note: UEStudio creates the make file when necessary, i.e. on making a change in project settings, on list of project files changes, on switching between debug and release, etc. The batch file can't generate the make file. It expects that the make file was created before by UEStudio. So in worst case it could be in rare cases necessary to click in UEStudio first on ribbon tab
Build in first ribbon group
Settings on item
Regenerate makefile to create it before running the tool which runs the batch file. Well, this is definitely never necessary on having run before a regular build/rebuild.
Environment variable UESNOCMD
This environment variable passes with value
0 or
1 the build option
Show build commands when executing as it can be set by clicking on ribbon tab
Build in second ribbon group
Build on item
Options for opening the
Advanced Build Options. The default is to hide the build commands which means value
1 is assigned to environment variable
UESNOCMD. Please use whatever you like.
Environment variable MYMAKESTOPAT
This environment variable defines after how many not successfully compiled modules (*.c or *.cpp files) the build process should be stopped by
mymake.exe as it does not make sense most likely to continue the build process. The value assigned to the environment variable is the same as set for build option
Stop build after X error module(s) in
Advanced Build Options dialog window.
It makes perhaps most sense for static analysis that value
1 is assigned to this environment variable as a static analysis of an entire project does not make much sense on build/compilation of any module fails.
There are some more environment variables evaluated by
mymake.exe, but I think those are not important for static analysis build.
Command line options of mymake.exe
mymake.exe is called by UEStudio with just
CLEAN to clean the project like on clicking on ribbon tab
Build in second ribbon group
Build on item
Clean. Just command line option
ALL is used on running a
Build. And the command line options
CLEAN ALL are used together on running a
Rebuild. I suggest to always run a rebuild in this case for static analysis.
This batch file needs to be executed either by a configured user or project tool. The batch file must be called with project file name with full path and so it makes more sense to configure for each Microchip project a project tool for static analysis instead of a user tool because then it is impossible to run the user tool while no Microchip project currently opened in UEStudio. The project tool settings are always the same.
So I suggest to click on ribbon tab
Project in sixth ribbon group
Tools on down arrow of item
Project tools and click on popup menu on
Configure tools.
On tab Command
Menu item name:
Static analysis (for example)
Command line:
"Path to batch file\BatchFileName.bat" "%r"
Working directory:
%rp
Toolbar bitmap/icon (file path):
(let it empty or browse to a suitable image file)
On tab Options
Program type:
DOS program
Save active file:
checked
Save all files first:
checked
On tab Output
Command output:
Output to list box
Show DOS box:
unchecked
Capture output:
checked
Replace selected text with:
No replace
Then the project tool is ready for execution by (customized) hotkey or chord, by a click on ribbon tab
Project in sixth ribbon group
Tools on appropriate item in popup menu opened on clicking on down arrow, via item on a customized ribbon tab, or after switching to
Toolbar/Menu Mode (only contemporary menus available in UES v16.00) from menu
Project - Project tools or a customized toolbar.