калькулятор windows 10 код
В «Калькуляторе» для Windows 10 Insider Preview Build 19546 появился графический режим
В новой сборке Windows 10 Insider Preview Build 19546, которая с 16 января 2020 года стала доступна участникам программы Windows Insider, появился графический режим для приложения «Калькулятор».
Новый режим «Калькулятора» отображает графики функций в удобном и понятном для пользователей виде. В общем графическом окне программы можно задать несколько уравнений, сравнить их графики между собой. Также можно манипулировать параметрами переменных в уравнениях и анализировать, как эти изменения в уравнениях влияют на графики. Причем пользователи могут выбирать нужные части графиков и просматривать их на разных уровнях детализации.
Графики из нового режима «Калькулятора» можно экспортировать, например, чтобы поделиться с другими пользователями или вставить в документ Microsoft Office.
Microsoft также позволит системным администраторам отключать этот режим для корпоративных пользователей, если это будет необходимо.
Microsoft заявила, что до августа 2020 года выпустит обновление «Калькулятора» с графическим режимом, которое будет доступно для всех пользователей Windows 10.
В начале марта 2019 года Microsoft открыла исходный код «Калькулятора» под Windows для того, чтобы любой пользователь смог ознакомиться с такими технологиями Microsoft как Fluent, Universal Windows Platform, Azure Pipelines и другими. Программа написана на С++ и содержит более 35000 строк кода. Для компиляции проекта пользователям необходима Windows 10 и последняя версия Visual Studio. Проект выложен на GitHub.
Подсчитаем баги в калькуляторе Windows
Введение
Калькулятор Windows наверняка знаком каждому пользователю этой операционной системы и не требует особого представления. Теперь же любой пользователь может изучить исходный код калькулятора на GitHub и предложить свои улучшения.
Общественность, например, уже обратила внимание на такую функцию:
которая логирует текст из буфера обмена и, возможно, отправляет его на серверы Microsoft. Но эта заметка не об этом. Хотя подозрительных примеров кода будет много.
Мы проверили исходный код калькулятора с помощью статического анализатора PVS-Studio. Так как код написан на нестандартном C++, многие постоянные читатели блога анализатора усомнились в возможности анализа, но это оказалось возможным. C++/CLI и C++/CX поддерживаются анализатором. Некоторые диагностики выдали ложные предупреждения из-за этого, но ничего критичного не произошло, что помешало бы воспользоваться этим инструментом.
Возможно, вы пропустили новости и о других возможностях PVS-Studio, поэтому хочу напомнить, что кроме проектов на языках C и C++, можно проанализировать код и на языках C# и Java.
Про неправильное сравнение строк
V547 Expression ‘m_resolvedName == L«en-US»’ is always false. To compare strings you should use wcscmp() function. Calculator LocalizationSettings.h 180
Я просматриваю отчёты анализатора, сортируя их по возрастанию номеров диагностик, и предупреждение на этот код было самым первым в списке, и очень удачным.
Дело в том, что здесь неправильно сравниваются строки. Получилось сравнение указателей вместо значений строк. Сравнивается адрес массива символов с адресом строкового литерала. Указатели всегда неравны, поэтому условие всегда ложно. Для правильного сравнения строк следует использовать, например, функцию wcscmp.
Кстати, пока я пишу эту статью, в заголовочном файле массив символов m_resolvedName превратился в полноценную строку типа std::wstring. И теперь сравнение работает правильно. К моменту, когда вы будете читать эту статью, скорее всего, многие другие ошибки тоже будут исправлены благодаря энтузиастам и таким исследованиям, как это.
Утечка памяти в нативном коде
V773 The function was exited without releasing the ‘temp’ pointer. A memory leak is possible. CalcViewModel StandardCalculatorViewModel.cpp 529
Мы видим указатель temp, ссылающийся на массив из 100 элементов, под который выделена динамическая память. К сожалению, память освобождается всего в одном месте функции, во всех остальных местах возникает утечка памяти. Она не очень большая, но это всё равно ошибка для C++ кода.
Неуловимое исключение
V702 Classes should always be derived from std::exception (and alike) as ‘public’ (no keyword was specified, so compiler defaults it to ‘private’). CalcManager CalcException.h 4
Анализатор обнаружил класс, унаследованный от класса std::exception через модификатор private (модификатор по умолчанию, если ничего не указано). Проблема такого кода заключается в том, что при попытке поймать общее исключение std::exception исключение типа CalcException будет пропущено. Такое поведение возникает потому, что приватное наследование исключает неявное преобразование типов.
Пропущенный день
V719 The switch statement does not cover all values of the ‘DateUnit’ enum: Day. CalcViewModel DateCalculator.cpp 279
Подозрительно, что в switch не рассмотрен случай с DateUnit::Day. Из-за этого в календарь (переменная m_calendar) не добавляется значение, связанное с днём, хотя метод AddDays у календаря присутствует.
Подозрительные сравнение вещественных чисел
Избыточность
Переменная op уже сравнивалась со значением NumbersAndOperatorsEnum::None и дублирующую проверку можно удалить.
Это гигантское условное выражение изначально имело ширину 218 символов, но я разбил его на несколько строк для демонстрации предупреждения. А переписать код можно до такого короткого и, главное, читабельного варианта:
V524 It is odd that the body of ‘ConvertBack’ function is fully equivalent to the body of ‘Convert’ function. Calculator BooleanNegationConverter.cpp 24
Анализатор обнаружил две функции, которые реализованы одинаково. По названиям функций Convert и ConvertBack можно предположить, что они должны выполнять разные действия, но разработчикам виднее.
Заключение
Наверное, каждый открытый проект от Microsoft давал нам возможность показать важность применения методологии статического анализа. Даже на таких маленьких проектах, как калькулятор. В таких крупных компаниях, как Microsoft, Google, Amazon и других, работает много талантливых программистов, но они такие же люди, которые делают ошибки в коде. Применение инструментов статического анализа кода — один из хороших способов повысить качество программ в любых командах разработчиков.
Проверь свой «Калькулятор», скачав PVS-Studio и попробовав на своём проекте. 🙂
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Svyatoslav Razmyslov. Counting Bugs in Windows Calculator
Калькулятор windows 10 код
The Windows Calculator app is a modern Windows app written in C++ and C# that ships pre-installed with Windows. The app provides standard, scientific, and programmer calculator functionality, as well as a set of converters between various units of measurement and currencies.
Calculator ships regularly with new features and bug fixes. You can get the latest version of Calculator in the Microsoft Store.
Your computer must be running Windows 10, version 1803 or newer.
Install the latest version of Visual Studio (the free community edition is sufficient).
Install the XAML Styler Visual Studio extension.
Open src\Calculator.sln in Visual Studio to build and run the Calculator app.
For a general description of the Calculator project architecture see ApplicationArchitecture.md.
To run the UI Tests, you need to make sure that Windows Application Driver (WinAppDriver) is installed.
Want to contribute? The team encourages community feedback and contributions. Please follow our contributing guidelines.
If Calculator is not working properly, please file a report in the Feedback Hub. We also welcome issues submitted on GitHub.
For information regarding Windows Calculator plans and release schedule, please see the Windows Calculator Roadmap.
Adding graphing calculator functionality is on the project roadmap and we hope that this project can create a great end-user experience around graphing. To that end, the UI from the official in-box Windows Calculator is currently part of this repository, although the proprietary Microsoft-built graphing engine, which also drives graphing in Microsoft Mathematics and OneNote, is not. Community members can still be involved in the creation of the UI, however developer builds will not have graphing functionality due to the use of a mock implementation of the engine built on top of a common graphing API.
This project collects usage data and sends it to Microsoft to help improve our products and services. Read our privacy statement to learn more. Diagnostic data is disabled in development builds by default, and can be enabled with the SEND_DIAGNOSTICS build flag.
Windows Calculator includes a currency converter feature that uses mock data in developer builds. The data that Microsoft uses for the currency converter feature (e.g., in the retail version of the application) is not licensed for your use. The mock data will be clearly identifiable as it references planets instead of countries, and remains static regardless of selected inputs.
Reporting Security Issues
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
About
Windows Calculator: A simple yet powerful calculator that ships with Windows
Windows калькулятор теперь Open-Source
Мы рады рассказать, что на прошлой неделе наш Windows Calculator стал OpenSource. Сейчас он доступен на GitHub по лицензии MIT. Это включает в себя исходный код, структуру сборки, модульные тесты и структуру продукта. Наша цель — создать еще лучший продукт в партнерстве с сообществом. Мы поощряем ваши свежие идеи и активное участие в определении будущего Windows Calculator.
Как разработчики, если вы хотите узнать, как работают различные части приложения «Калькулятор», легко интегрировать логику или пользовательский интерфейс «Калькулятор» в свои собственные приложения или внести непосредственный вклад во что-то, что есть в Windows, теперь вы можете это сделать. Калькулятор будет продолжать проходить все обычные процессы тестирования, проверки соответствия, безопасности, качества и проверки внутренних данных, как это происходит со всем остальными приложениями. Вы можете узнать больше об этом в документации на GitHub.
Совместная разработка
Помимо повторного использования и адаптации кода в ваших собственных приложениях, каждый может принять участие в разработке калькулятора Windows. Вовлечься просто. Проект “clone-and-go”, и его развитие будет осуществляться в соответствии со стандартным процессом GitHub. На всех этапах разработчики могут внести свой вклад:
Обучение
Изучение кода калькулятора — отличный способ узнать о новейших технологиях Microsoft, таких как универсальная платформа Windows, XAML и Azure Pipelines. Благодаря этому проекту разработчики могут извлечь уроки из полного цикла разработки Microsoft, а также повторно использовать код для создания собственных продуктов. Это также отличный пример создания Fluent app design. Чтобы сделать это еще проще, мы будем предоставлять пользовательские элементы управления и расширения API, которые мы используем в калькуляторе и других приложениях, для таких проектов, как Windows Community Toolkit и Windows UI Library.
Мы рады пригласить всех вас в команду Windows Calculator! Чтобы начать, заходите в проект Windows Calculator на GitHub.
Microsoft открыла исходные коды Калькулятора Windows
Открытый проект по разработке Калькулятора Windows размещён на GitHub под лицензией MIT. Речь идёт об исходных кодах, системе сборки, инструментах тестирования и дорожной карте приложения. То есть исходники открыты не для простого изучения любопытными разработчиками, а для дальнейшей работы над Калькулятором совместно с сообществом.
Сторонним разработчикам предоставлена уникальная возможность принять участие в разработке чего-то, что поставляется в комплекте с Windows. Разумеется они смогут использовать любые наработки открытого проекта и для своих собственных программ.
Компания отмечает, что Калькулятор по-прежнему будет проходить через все обычные уровни тестирования, проверки на качество, безопасность и совместимость, будет отправляться инсайдерам, также как все остальные приложения из набора Windows 10.
Чем эта новость интересна нам с вами, рядовым пользователям «десятки»? Для начала тем, что в рамках открытого проекта запуск новых функций и устранение неполадок наверняка будут происходить быстрее, чем раньше. Можно предположить, что если полученный опыт понравится Microsoft, открытыми станут Windows 10 Mobile и другие приложения из набора операционной системы.