You could copy your file and replace the console.log() with a regex and then
use this file version. You will need to add a target to your .pro. Here a quick
example of something I do for my i18n target:
i18nTarget.target = $${AMOTUS_ROOT}/i18n
i18nTarget.depends = FORCE
i18nTarget.commands = QMAKE_MKDIR_CMD($${AMOTUS_ROOT}/i18n)
QMAKE_EXTRA_TARGETS += i18nTarget
You will need to define your own command here and run that command before make,
more info can be found over here:
https://doc.qt.io/qt-5/qmake-advanced-usage.html
-----Original Message-----
From: Interest <[email protected]> On Behalf Of Konstantin Tokarev
Sent: April 24, 2019 3:09 PM
To: Alexander Ivash <[email protected]>; interestqt-project.org
<[email protected]>
Subject: Re: [Interest] QML preprocessing
24.04.2019, 22:01, "Alexander Ivash" <[email protected]>:
> What I really need is some 'plugin' to qmake which would allow to
> modify qml files on the fly before placing it into resources (but not
> touching them on filesystem!). In ideal world, yeah.
That's possible to do with qmake already, but you'll have to build resource
files manually via custom targets
>
> ср, 24 апр. 2019 г. в 21:51, Alexander Ivash <[email protected]>:
>> 2Jerome:
>>
>> The issue is that even if that function will be doing nothing,
>> logging
>> data (which might be sensitive) can be captured via hooks / dump
>> analysis etc. I really need to pre-processes to eliminate not only
>> function call but also function parameters completely. Think about
>> this scenario:
>>
>> console.debug('password: ',
>> someFunctionWhichReturnsPasswordFromProtectedStorage());
You can wrap this whole expression into function and replace that function with
empty one:
function printPasswordToDebug() {
console.debug('password: ',
someFunctionWhichReturnsPasswordFromProtectedStorage());
}
and replace printPasswordToDebug
>>
>> In this case even if console.debug will be replaced with empty
>> function, 'someFunctionWhichReturnsPasswordFromProtectedStorage()'
>> will be executed anyway and as the result password will appear
>> somewhere in JS heap so after capturing dump it will be simpler to
>> find it.
>>
>> 2Tomasz:
>>
>> In fact I would love to use logging category, but only for debug
>> builds. But I have some requirements to minimize risk of sensitive
>> data leak via logging. And to make a life of reverse engineers a bit
>> more complicated if you like. So ideally no logging-related
>> functions
>> (and their parameters too!) should be visible in release build.
>>
>> ср, 24 апр. 2019 г. в 21:27, Jérôme Godbout <[email protected]>:
>> >
>> > Maybe you can overload the functor directly into the code and import the
>> file only if in debug mode (optional module):
>> > http://udidu.blogspot.com/2012/12/override-console-functions.html
>> >
>> > That could also be helpful to split the log into multiple receiver.
>> >
>> > Not sure if this would work, but maybe you can override the console.log
>> command into the QQmlScriptEngine and define a new javascript function that
>> does nothing. Maybe into the your main.cpp where you create the QQmlEngine
>> you can call the rootContext() QQmlContext object, maybe you can extract the
>> console object with QVariant contextProperty() and set the debug() property
>> of it with a QQmlExpression, I cannot glue all this together, but maybe
>> something into that direction could be done before you start loading the
>> main qml file. This is far fetched by might work but it seem overcomplicated
>> to me.
>> >
>> > -----Original Message-----
>> > From: Interest <[email protected]> On Behalf Of
>> Alexander Ivash
>> > Sent: April 24, 2019 12:56 PM
>> > To: interestqt-project.org <[email protected]>
>> > Subject: [Interest] QML preprocessing
>> >
>> > I understand that this topic was raised a lot of times and that this is
>> not QML-way. But, what options do I have in case of requirements to
>> eliminate all the logging for release builds?
>> >
>> > Is there any hidden magic in qmake, like 'QMAKE_SUBSTITUTES' but more
>> flexible to substitute all the 'console.debug....' with '// console.debug'
>> right before adding qml into resources?
>> >
>> > p.s. Yea, I'm aware of selectors, but would like to avoid having
>> both component-with-logging.qml and component-with-no-logging.qml
>> >
>> > Regards, Alexander
>> > _______________________________________________
>> > Interest mailing list
>> > [email protected]
>> > https://lists.qt-project.org/listinfo/interest
>
> _______________________________________________
> Interest mailing list
> [email protected]
> https://lists.qt-project.org/listinfo/interest
--
Regards,
Konstantin
_______________________________________________
Interest mailing list
[email protected]
https://lists.qt-project.org/listinfo/interest
_______________________________________________
Interest mailing list
[email protected]
https://lists.qt-project.org/listinfo/interest